« 2013年3月 | トップページ | 2013年5月 »

2013年4月

2013年4月27日 (土)

秀丸(hidemaru)でautofillできるか?

秀丸(hidemaru)でautofillできるか?

Time-stamp: "Fri Jun 22 10:33:31 JST 2012"
Emacs の auto-fill-mode っぽいことを秀丸でやりたいんす。秀丸で[折り 返し]の設定しても見た目が折り返されるだけなんです。ヲレの希望は折り 返したいところにさらに改行を入れてもらいたいんすよ。探したらありまし た。先人達に感謝。
秀丸 整形&連結®引用マクロ
http://www.vector.co.jp/soft/win95/writing/se040416.html

私の使っているテキストエディタvimでの行末自動折り返しは次のように進 む。第一行の先頭(第一)カラムから文字入力してゆき最終カラム(一行文字 数にあたる末尾のカラム)に到達すると次の文字は次行(第二行目)の先頭(第 一)カラムに送られる。もし第二行目が既に入力済みであったなら折り返さ れる以前の入力中の行(第一行目)の下にあった行(元の第二行目)は押し下げ られて新第三行目になる。第一行目の最終カラムを突き出たために折り返さ れたものが新第二行目になる。

ワープロなら新第二行目の後ろに元の第二行目以下がぶら下がるように段落 終わりまでがきれいに詰め込まれる。それを見なれているとvimエディタに おける不完全な詰め込み動作をヘンに思うだろう。

エディタの(私が使っている)vimは、入力中の行があふれたら現在入力中の 行(第一行)とその下にある既に入力されている行(元の二行目)との間に新し い行(新二行目)を新設して、あふれた部分をそこに収容する。新第三行目 (元の第二行)以下は何も変更されないでそのままになる。行単位で編集する というエディタの流儀(行末毎に改行文字を入れる)にそった動きである。

すでにある行の途中に文字列を挿入する場合は次のようになる。新しく付け 加える文字列の末尾文字がその行の最終カラムに到達するまでは、元々あっ た後続文字列がその行の最終カラムからはみ出して右に突き出てゆく状態に なる。行末自動折り返しはその行の最終カラムに文字を打ち込んだタイミン グで起こる。行の途中から最終カラムの手前までに文字を挿入した場合は、 その文字数分だけの挿入前からある行の末尾部分が右に突き出た状態にな る。

打ち込み済みの行の途中から文字列を消去してもその行が短かくなるだけで ある。その行以下にある行の文字が上の行まで繰り上がって来て縮んでいる 行を満たすように詰め込むことをしない。文字列の消去や挿入はそれ以下の 行に影響しない。その行だけかその下に行が新設されるにとどまる。とりあ えずの応急処置として最低限のことしかしない。段落の全体を整える作業は 別に(後で)行なう。

既存行への文字列の挿入や消去が上記のような処理になるために、どうして も行末をはみ出たり行の途中で終わっている行ができてしまう。それを直す には行単位で整形範囲を指定したうえで整形コマンドを実行する。

エディタが行単位の編集であるに対してワープロは段落(何個かの文からな るひとかたまり)単位で編集する。文字を挿入したり消去したりする度にリ アルタイムで段落の全体が整形される。一文字を挿入するだけでその文字以 降の段落後半にある文字がゴソッと動く。

エディタ(vimなど)では現在行だけが伸びたり縮んだりする。もし、行の最 終カラムに文字が入力されたら改行を入れて行を新設する。その他の後ろに ある行はそのままで変わらない。

現在はvimを使っているが以前はmeadowを使っていた。meadowでできていた 上記のような行末自動折り返しがvimでも出来ることが分かったのでvimも使 うようになった。ワープロの整形が全自動であるとしたらmeadowやvimでの それは半自動といえる。打ち込み中の行末で自力で改行文字を入れなくても 機械が自動的に入れてくれることに満足している。ワープロより低機能なそ れに慣らされてしまった。負け惜しみになるが、エディタで全自動な整形は 却って危険なのではないかと思う。

秀丸のマクロで行末自動折り返しできるものは未だみつけられない。すでに 入力済みのものに対して一定文字数で改行を後から付け足すものはあるが、 キーボードを叩いているときにリアルタイムで改行を入れて折り返すものは ないようである。行末自動折り返しを、事後処理ではなくて即時(その場)処 理にして欲しいのである。

最新の秀丸をマクロなしのデフォルトで使ってみる。秀丸における行末折り 返しは次のようである。「ファイルタイプ別の設定」の「体裁」に「折り返 し」の項目がある。固定で折り返し文字数を10(設定範囲は10~4000)に設定 する。編集画面最上部のルーラーが10桁(半角)までしか表示されなくなる。

こうして平仮名を5文字(例えば、あいうえお)を入力して平仮名変換確定す ると画面に「あいうえお」と表示されてカーソルは次行に移る。カーソルが 移った先の見かけの第二行目には行番号が表示されない(行番号は、改行文 字だけを数えるエディタ的行番号を表示することに体裁の詳細で選んでい る)。見かけは行替えしているけれども改行文字が入ったわけではない。

既に打ち込んでいる文字列に書き加えたり消したりしても順繰りに移動して 行頭から行列までがびっしりと文字で埋まる。ワープロ的な動きになる。こ れでファイル保存すると見かけの行替えは失われ、意識して入れた本物の改 行だけが残る。見かけの折り返し位置はファイルに記録されない。再び秀丸 で開くときに、折り返し10桁に設定しないと保存前の表示が再現されない。

他のエディタで開いても表示が同じになるようにするには見かけの折り返し 位置に改行文字を入れる必要がある。秀丸におけるこの作業は少し面倒であ る。見掛けの折り返し位置に改行を入れたい一連の行を選択する。編集メ ニューから整形を選ぶ。その中から「折り返しに改行を入れてコピー」を指 定する。行を選択している状態で編集メニューから貼り付けを選ぶ。反転表 示している部分が、行末に改行文字が入ったもので置き換わる。

ちょっと面倒そうだが、慣れればどうってことないのかもしれない。秀丸を 使い始めたころは、キーボードからの文字入力もあやふや(一本指打法)でま まならない。文字入力にせいいっぱいで項目が多すぎる秀丸の設定をいじる 余裕はない。どうしても希望のことができる設定を見つけられなかった。

(注)「折り返しに改行を入れてコピー」はテキストエディタのterapadが早 くから備えているものらしい。

ところで、上記の折り返し桁数などについてwindows式のダイアログボック スによる設定には馴染めない。ラジオボタンにチェックを入れたり数字を打 ち込むだけの簡単で済むというのはいい。しかし、そのように設定したとい う記憶がすぐに失せる。マウスでポチッとクリックしただけはすぐに忘れ る。つい指先が滑って違うところにチェックを入れてしまう失敗があったか もしれない。昔のように設定ファイルに文字で打ち込んだことは記憶に残 る。

手間と時間をかけて苦労したことほど忘れにくい。目で文書の字面をなぞっ ただけ(黙読)では不十分で声に出して読み上げ、それを耳で聞く。手を動か して紙に書き、それを読み上げるなど五感(視る、聴く、触る、味わう、嗅 ぐ(臭いをかぐ))を総動員することである(味と臭いはムリ)。

設定ダイアログの無難な(と思われる)デフォルトの設定を変えるのがこわ い。どうなるのかに不安がある。また、ダイアログ式では設定を変えたとい う跡形が残らない。元に戻せなくなったらどうしよう。親切なダイアログな らデフォルトに戻すボタンがある。しかしデフォルトが一番とは限らない。 デフォルトから少し変えたのが快適な着地点だったかもしれない。気軽にご 破算とはいかない。その点からいうと設定ファイルに独自設定を書き込む方 式がすぐれている。

手軽に設定を変えられるダイアログは便利だけれど、その項目の羅列の中か ら希望のものを見つけることにいつも一苦労する。秀丸の設定は、ファイル 別の設定と動作環境の二つがある。それぞれに多数の項目がある。大まかな 分類から細かな枝葉に分かれてゆく。それらを展開しながら探し回るのにウ ンザリする。希望の設定が大分類のどこに入るか見当がつかない。開けてみ ないと分からない。アッチを開け、コッチを開けて結局のところズバリの場 所を見つけられない。

windowsのメモ帳は、画面右端に到達している行末に書き足してゆくと画面左 端から行の先頭部分が次第に消えてゆく。横スクロールバーが現われるので 行の前の方に引き返すことはできる。それがうっとうしいなら書式メニュー の「右端で折り返す」にチェックを入れる。そうすると画面右端に達したら 次の文字が下の行の先頭に入るようになる。注意すべきは、ファイル保存時 に「右端で折り返す」チェックが入ったままだと、画面右端文字の後ろに改 行文字が入れられて保存されることである(秀丸とは挙動が違う)。それが希 望でないなら保存前に「右端で折り返す」を外してから保存する。そうする と画面右端の見かけの折り返し部分に改行文字は入らない。

メモ帳を使う際には、「書式」で「右端で折り返す」という設定にしてある と思います。これを設定していないと文章を書いていると改行しない限りど んどん右へ文章全体が移動してしまい、前の文章が見づらくなるからです。 さて、「右端で折り返す」に設定して「名前をつけて保存」や「上書き保 存」をするとこの「勝手に改行が入ってしまう!」という現象が起きるので す。

テキストエディタでの物書きには、文字を打ち込んでゆき指定文字数(例え ば、80桁(全角40字))になったら自動的に改行文字を入れて次行の行頭に カーソルを移す機能(行末自動折り返し)が欲しい。ワープロなら当たり前に 出来てしまう簡単なことがエディタには出来ない。第一行目を希望文字数に なるように打ち込んでそれを定規にして自分で改行を入れていけばよいと切 り捨てないでほしい(メールソフトは、そうするしかないようである)。

エディタをプログラミング用として使うなら行末自動折り返しは却って不都 合である。一定文字数になったからと言ってもヘンなところでぶつ切りにさ れては困る。英文を扱うエディタの行末自動折り返しは単語を途中で切断し ない。単語間のスペースなどで折り返す。それくらい用心して行替えする。 だからプログラムの編集でコマンド名や変数名を前後生き別れに切断するこ とはしない。エディタに打ち込む長ーい単語としてはインターネットの住所 を示すURLがある。文字間にスペースがないからエディタはURLを分割できる 場所を見つけられないのである(URLを分割されたらヒジョーに困る)。

無用なトラブルを避けるために、エディタは使用者が改行文字を入れないか ぎり見ばえのために勝手に改行文字を入れることはない。エディタは一行に 何文字でも書き込めるようにつくられている(ソフトにより制限はある)。そ れゆえ行末自動折り返しは、本来プログラミングに使うべきエディタを文章 書きに流用するときの便利のために後付けしたものだろう。

とくに秀丸はプログラミング用に作られたらしい。一般の文章書きに使うこ とは考えてない。私は秀丸の送金済み登録ユーザーであるが、現在の常用エ ディタとしていない。それは入力時に一定文字数で行末自動折り返ししてく れないからである。テキストエディタを毎日使っているがそれはプログラミ ングのためではない。日々思いついたことをメモするなど普通の文章書きに 使っている。

斉藤氏の場合、こうした「とっかかり」を1980年代初めに経験している。当時 のホビー・マシンであったNECのPC-6001を使い、1982年創刊のベーシック・ マガジンなどの雑誌を通じてプログラミングの仕方を覚えていき、ソフト ウェア開発を行うようになった。こうしてソフトウェア開発に対する関心を もった斉藤氏は、中学卒業後は高等専門学校に進学し、1988年に地元の富士 通に入社した。富士通ではソフトウェア開発の仕事をできると期待していた 斉藤氏だが、実際にはプログラミングをする機会には恵まれなかった。そこ で、斉藤氏は業務外で独自にソフトウェアを開発するようになった。当時、 斉藤氏が開発していたのはMS-DOS用あるいはOS/2用のソフトウェアであり、 種類としては通信ソフトとエディタであった。これらを社内で同僚たちに配 布したところ、このころはOS/2用ソフトウェアが少なかったこともあり、業 務には使えないにもかかわらず、珍しがられ、喜ばれたという。

日本語文書きの際に自分で改行のタイミングを決めるのは面倒である。その 昔の手動式英文タイプライターには、印字位置がタイプ用紙の右端に近付い たらチンという音で知らせるようになっていた。そういうことがなくて目視 だけで改行位置を判断をするのは難しい。原稿、手元(キーボード)、画面へ と目線は激しく行ったり来たりする。夢中になると、つい画面を忘れてしま うのである。

単語間をスペースで区切る分かち書きの英文は、行末を一直線に揃えること ができない。長短不定な単語の組み合わせで文が出来ているからである。ま た、単語自体は自由な位置で切断できない。音節区切りにハイフンを入れて 二行にまたがらせるハイフネーションはタイプライターでは出来ない(しな い)。英文の行末を揃えることは元々むりなことである。それゆえ英語圏の 人達は行末の不揃いを気にしない。手書きや手動式タイプライター での行末揃えは不可能なのである。

それに対してベタ書きな日本文は文字列のどこでも切断できる。漢字・ひら がな・カタカナそしてアルファベットの文字種の違いが目印になり英語のよ うに分かち書きにしなくても外国語でいうところの単語の区切りが読み取れ る(ひらがなやカタカナのベタ書きが読み難いのは区切りがないからであ る)。どこで文を切断しても構わないことから行の右端を揃える習慣があ る。そうでないと乱雑に見えてしまう。我々はそうすることに慣らされてい る(そのようにしつけられている)。文字がびっしりと詰っていると息苦しく 思えるときは意識してスカスカにゆったりと文字を並べるカジュアルにする ことはある。しかし、フォーマルなものは行頭を揃えるのは当たり前であっ て更に行末も一直線にビシッと揃えるのである。

ほぼタッチタイピングになり画面上の文字を見ながら手元を見ることなく キーボードに打ち込めるようにはなっているとはいえ、行末の行替えを自力 でやるのは勘弁してほしい。とくに日本語文は行末がデコボコでは格好が悪 いのである。あとで修整すればよいと長短マチマチな文を書くのは嫌であ る。整然と文字が並んでいないと書いてある内容を粗雑に感じてしまう。そ れを見た他人はいうまでもなく書いている本人がそう思う。文案を作成して いる段階から行末などの体裁が揃ってないと落ち着かない。最終的にはワー プロや組版ソフトなどの機械で清書するにしてもである。

秀丸で行末自動折り返しが出来ないかと思案している頃にLaTeXに出会う。 ワープロを超える綺麗な文書を作ることができるという点に引かれる。その 関連からテキストエディタのmuleに挑戦する。このmuleでは行末自動折り返 しが出来きた。実は秀丸でもマクロを入れれば出来るらしい(?)。muleのよ いところはデフォルトで行末自動折り返しを備えていることである。それを 使うか使わないかは本人の自由である。

(注)muleの後継がmeadowになる。

どんなソフトでもそうであるが使い込んでいるようでも未だ使ったことがな い機能がいっぱい残っている。毎日vimを使っていてもネット検索でこれま で知らなかった使い方を見つける。デフォルトでコンナことが出来たのだと 嬉しくなる。

秀丸は後付けで行末自動折り返しマクロを自分で入れなければならない(よ うである)。これは敷居が高い。マクロをどうやって組み込んでどのように 使うのかが分からない。秀丸を使い始めたばかりの者には到底無理である。 meadowのようにauto-fill-modeがデフォルトのインストールで付属しておれ ばすぐに使える。使用者が使うかどうか分からないけれど、付いておれば気 軽に試してみることができる。

meadowのautofillもマクロ(emacs-lisp)で処理している。違うのはそれが本 体に初めから付属しているということである。meadowは歴史が古いだけにマ クロが十分に枯れているのだろう。定評のあるものに一本化できている。そ れに対して秀丸マクロは歴史が浅くて種々雑多なものが乱立状態にある。秀 丸に搭載するマクロを一つに絞り込めるに至ってない。そこで本体に付属さ せることはしないことにして、どのマクロを選ぶかは使用者の判断に任せて いるようだ。

秀丸とvimやmeadowのマクロには際立った違いがある。秀丸マクロの拡張子 が「.mac」であるものは秀丸本体に一本も付属してない。それに対してvim の「.vim」とか、meadowの「.el」ファイルは多数がデフォルトで含まれて いる。マクロ重視なmeadowやvimに比べて秀丸はマクロ軽視どころかマクロ 無視のようである。もっとも、マクロはオマケと考えるのが正しいのかもし れない。ややこしいことの全部をマクロに押し付けるのでは逃げているように見え る。

秀丸は個人開発のエディタである。マクロはたぶん秀丸の(パワー)ユーザー 作である。自分の作品でもないマクロを付属させるのはおこがましい(?)か らユーザーの自由な選択にまかせるになるのかなと思う。vimのマクロも、 誰にでも便利そうなものは入っている。マニアックなものとか開発中で仕様 が固まっていないようなものは別配布になっている。

エディタのemacsやviが開発された頃は一般の文章を書くための便利なソフ トはなかった。プログラミングに使われているエディタを手動式タイプライ ターの代りとして流用することを思い付く。タイプ紙に印字するタイプライ ターではタイプミスを修整するには修正液のような消しゴムを使う。エディ タは操作が(方法に慣れるまでは)面倒であるかもしれないが何の跡形もなく タイプミスを直せる。

非プログラマからの要望を取り入れて、エディタに物書き向きの便利な機能 を付けるようになったに違いない。適切な道具が無ければ、とりあえず目の 前にあるものをだましだましでも何とか工夫して使えるようにする。まった く新しいものをつくるより、今あるものを改良するほうが簡単である。プロ グラマはプログラムを書くだけでなくマニュアルや説明書などの一般の文章 も書く。それには日頃から使い慣れたプログラミングで使っているエディタ をそのまま使おうとするのは自然である。自分の使いやすいように道具を自 前で改良してゆく。

秀丸が、プログラミングではない一般の文章書きのための整形コマンド(整 形機能)を自前で備えなかったのは、テキストファイル用の整形ソフト(フォ ーマッタ)に任せることにしたためかもしれない。秀丸を常用にすることを 諦めてmuleを使うようになった後で、XTRというコマンドラインから使う非 対話式のフォーマッタを知る。このコマンドラインツールXTRはベクターか らダウンロードできる。XTRのマニュアル(約150ページ)はインターネット上 から見つけられなくなっているようなのでここに置きます。実物で試さなく てもどんなものかが分かる詳しいものです。

かつて(その昔)、(htmlのタグのような)整形コマンドを埋め込んでいない まったくの平文(ひらぶん)であるテキストファイルから、そのわずかな特徴 点(例えば、段落初めを全角空白で始める)を読み取って整形するソフトが使 われていた。ということはテキストエディタで一般の文章を整然としたもの に仕上げることがいかに困難(だった)かをあらわしている。当時のテキスト エディタはプログラミングに使う向きにつくられていた。一般の文章書きに は、見ばえを良くするための仕上げ(整形)ツールが必要だった(だろう)。

テキストファイルをどのエディタに読み込ませても作成したエディタと同じ 文書体裁で表示・印刷できるようにするには、全ての行末に改行文字が入っ てなければならない。各行末に改行が入ってないテキストファイルはエディ タにより再現性が異なるのである。例えば、少しく的外れだが、同じエディ タでも編集画面を縮小すれば見栄えが変わる。プリントアウトすると長大行 は尻切れトンボ(画面外にはみ出した部分は印刷されない)になってしまう。

ワープロは長大文書を扱うには力不足である。ワープロなら綺麗に仕上がる けれど長大なものは扱えない。テキストエディタは長大をこなせるけれど整 然とした文書にするには手間がかかる。それをテキスト整形ソフトがいくら か解決したのだろう。

長大な文書を整形ソフトで一気に処理するのはこわい。結果を全体にわたっ てを点検するには時間がかかる。思わぬ見落しがありそうである。とんでも ないところに無用な整形がかかっているかもしれない。やはり入力の段階か ら少しずつ整形を重ねながら部分・部分を着実に仕上げてゆくほうがよい。 一括処理よりも逐次処理のほうが安心である。

別のページでも少し触れていますが、「XTR」というのはぼくがむかし (1990年~92年)作ってパソコン通信などで公開したフリーソフトウェアで す。テキストフォーマッタといって、ワープロソフトのような文書整形と印 刷機能を持ちながら、画面でのユーザーインターフェースをもたなくて、テ キストエディタなどで作ったファイルをコマンドで処理するしくみになって います。これを作った当時、パソコンのパワーは今よりずっと貧弱で、 MS-DOS用の一太郎Ver4.3が動作が重いなどと言われていた時期でした。それ で、軽快なテキストエディタと組み合わせて使えばワープロよりも効率的な どと、パソコン雑誌などでも取り上げられるようになったものです。
今ではこれを使うメリットは、それほどありません。ぼく自身、触れること がなくなっています。しかし今でもたまに、ユーザーからの問い合わせを メールで受けたりします。それがほとんど視覚障害者なのです。視覚障害者 であっても最新のより優れたソフトウェアを利用できるようになるべきで す。(しかし残念なことに最新のソフトが視覚障害者にとって使えるように できているとはかぎりません)だからぼくの生み出したXTRが今でも使われ ていることは、あまりうれしいことだともいえないのです。

視覚障害者は音声読み上げソフトで文章を読んでいる。各行が長短不揃いで 余分なスペースが挟まっていたりの乱雑に見えるものでも問題ない(だろ う)。それを晴眼者(非視覚障害者)向けに清書するにはXTRのようなフォー マッタに頼るということのようだ。

| | コメント (0) | トラックバック (0)

« 2013年3月 | トップページ | 2013年5月 »