« 2013年7月 | トップページ | 2013年9月 »

2013年8月

2013年8月28日 (水)

テキストエディターのタブ(レター)キー(tabulator key)をどう使うか

テキストエディターのタブ(レター)キー(tabulator key)をどう使うか

Time-stamp: "Sat Nov 17 10:44:38 JST 2012"

タブ(ストップ)とは何だろうかと疑問がわく。手動式タイプライターを使っ たことはあるがタブキーを使う作表までの練習はしてない。タッチタイプに 近付くことで精一杯だった。エディターで表形式をつくるときに何となくタ ブキーを使っているけれど細かいことは考えないで通りすぎている。

パソコン(コンピューター)からテレックス、そして電気を使わない手動式タ イプライターまでを遡ってタブキーの原点を振り返ろうとするのは無駄なこ とではない。分からなくなったら原点まで遡る。道に迷ったら出発点まで引 き返すことである。とはいっても、使われなくなったタイプライターに関す る情報は少ない。うろ覚えを確かめる記事を探す。

タイプライターの印字は機械本体中央付近の固定点で行なわれる。タイプ用 紙を動かして必要な位置に一文字ずつハンコを押すスタイルである。一文字 を印字する度にタイプ用紙を右から左へ横方向に送る仕組みと、一行の印字 が終わったら用紙を下から上へと一行分だけ縦送りする仕掛けを備える。

具体的には横置きのプラテン(platen、元の意味はplate)と呼ばれるゴム製 のローラーとそれに外接するシリンダー(円筒)の間をタイプ用紙が通る。シ リンダーの内面とプラテンのゴム円筒外面の間に挟まれたタイプ用紙がプラ テンのゴム面にくっついて進む。プラテンの中心軸から外側に突き出した シャフトに取り付けられたプラテンノブを回転させることで用紙を縦送りで きる。プラテンノブを前後に回して印字を開始するタイプ用紙の行位置にハ ンコ式な印字位置を合わせる。

用紙を間に挟み込んだプラテンとその外接シリンダーからなる仕掛け全体を 指してキャリッジ(carriage、元の意味は運搬)と呼ぶ。タイプ用紙を運ぶ (横方向に動かす)台車がキャリッジである。キャリッジはタイプライター本 体上に横向きに取り付けられたレール上を左右方向に動けるようになってい る。用紙の縦送りはローラー(プラテン)の回転で行ない、用紙の横送りは キャリッジ(が保持するタイプ用紙)を左右に動かすことで行なう。印字開始 前にキャリッジの左側に付いたキャリッジリターンレバーを左手でつかみ右 方向に動かす。これで用紙左側の印字開始位置がハンコ式な印字位置に来 る。

文字キーを打つごとに該当文字のハンコが押され、用紙を保持したキャリッ ジが一文字分だけ左に動く。キャリッジ(タイプ用紙)が印字の度に左へ動い てゆき、印字できる残りスペースが少なくなるとアラームのベルが鳴る。適 当な頃合いでタイプライターの本体から左に突き出しているキャリッジの左 側に取り付けられたキャリッジリターンレバーを再び右に動かす。この操作 で行頭に印字位置を戻すこと、及び用紙を一行分だけ上に送る(プラテンの 回転)が同時に実行される。キャリッジリターン((行頭)復帰)とライン フィード(行送り)が同時に行なわれる。

タブキーはtabulator keyを端折(はしょ)った呼び方でタビュレターキーか らタブレターキーに訛(なま)ったらしい。タブレターからtabulatorの綴り は思いつかない。tabulatorにはtable(表)をつくる(人)という意味がある。 単にtabでは、他の意味にとられるかもしれないのでtabstopと限定的な呼び 方をすることもある。

手動式英文タイプライターによる作表では罫線を引かない。工夫すれば罫線 らしく見せることはできるかもしれないが、とても面倒な作業になる。タイ プライターは、機械式印字であってしかも文字は等幅である。そのため印字 文字は桝目状に整然と並ぶ。罫線が無くても表形式としての見栄え(視認性) に問題はない。

英米圏では罫線の(少)ない表が主流である。表の最上辺または最左辺とデー タ間を仕切る罫線だけのことが多い。データ間はスペースで区切るだけで (余分な)罫線を引かない。この習慣から海外製の表計算ソフトはデフォルト で罫線を引かない(シートのプロティで罫線を指定しなければならない。デ フォルトは罫線なしになっている)。日本人には、表の全体を桝目に「田の 字形」の罫線をビッシリと入れるのが好まれる。これは手書きの物書き(文 章書き)に桝目の入った原稿用紙を使う習慣がそのまま作表にも引き継がれ ているせいだろう。手書きの表は罫線がないと書き込みにくいし読みにく い。機械打ちは罫線を入れるのに手間がかかるので仕方なく最小限の罫線し か入れない。

文書の作り方にもお国柄が現れるようで、日本人は文書に表組みを多用する のが好きな民族なのだと聞いたことがありますが、どうなんでしょう?
好きかどうかはともかく、文書中に表を使って説明すると分かりやすい場合 があることは確かですね。項目とそれに対する説明を罫線で区切って整然と 並べた表を見ると、内容を読む前から分かったような気になってしまうのは 私だけでしょうか?
さて、表というと縦横の罫線でマス目が区切られたものをつい思い浮かべて しまいますが、欧米の人のつくる表では罫線が使われないことの方が普通な ようです。欧米では長年タイプライターで文書を作ってきたため、そもそも 罫線を使う発想がないのでしょうね。(引用終わり)

縦向きの用紙移動はキャリッジリターンで簡単だが、横向きの用紙移動は文 字キーを押すごとに一文字ずつの進みである。表の「横並び」の区画の間は スペース文字で埋める。キー打ち(打鍵)で空白(スペース文字)を一つずつ入 れてゆくのは面倒くさい。行き過ぎたらバックスペースで戻すことができる けれど簡単にタブ区画の位置決め(位取り)ができる機能がほしい。

タイプライターにおける作表のための位取りを簡単化するのがタブレター キーになる。仕掛けは簡単でキャリッジが左右に滑走(スライド)するレール (の上?脇?)にロックピンを立てる。普段は一文字打つごとにキャリッジが 一文字分だけ左にスライドする(用紙上の印字位置が右に動く)。タブキーを 押すと打鍵ごとにキャリッジを一文字分だけ進める仕掛けを解除する。そう するとロックピンの位置まで一挙にキャリッジが進む。ロックピンの位置で 打鍵すると一打鍵一桁進みに戻る。

これもタイプライターのタブの仕組みをみるとすぐわかるwピンがたくさん 並んでる。。。赤丸は、タブを設定した部分。とりあえず3ヶ所設定してみ た。つまり、通常はピンが全部下方向に飛び出してて、タブ設定のつまみを 操作すると、このピンが一本ずつ飛び出す。まさにこのピンがTabの正 体。
タイプライターのTabキーをおすと、印字位置がスライドして、このピン の飛び出ているところにあたってとまる仕組み。これで印字位置を揃えられ る^^。。写真だけじゃ何がどう動くのかわかりにくいかもだけどwwまぁ w とにかく騒がしい機械だよw Tabキー押したときもw、いちいちガ ンッっていって壊れそうな勢いで動くからねwwよくこんな細いピンで耐え られてるって感心するくらいw(引用終わり)

タイプライターの初期モデルや安価な練習機では、タブキーによるキャリッ ジの一挙送りを止めるロックピンは一定間隔で立てられている。8桁置きタ ブが多いらしい。一行80桁(文字)なら10区画が確保できる。

(注)「ノアックス株式会社はイタリア オリベッティ社の日本総販売元です」 とある。入門モデルのようで固定タブ(7箇所)とある。

8桁置きの固定間隔タブでは不自由なので任意の位置にロックピンを立てる ことのできる仕組みが増設された。ロックピンを立てる操作のためのタブ セットキーとタブ位置を解除するタブクリアキーを設けた先進機種となる。 なお、タブキーはタブ区画の開始位置に印字位置を進めるだけである。タブ 区画に対して、いわゆる左揃え位置に進める。数値の小数点位置を合わせる (右揃え)には桁数の少ない数値の先頭部分にスペース文字を補う必要があ る。

手動式(電気を使わない機械式)タイプライターのタブキーは、任意位置指定 までの進化で終わる。これ以上の複雑な動作・機能を詰め込むには無理があ る。高機能になっても重い(本体自重や操作、動作速度)・故障しやすい(メ カが複雑)・高価となれば需要がない。

長々と手動式タイプライターの構造を取り上げたのは、タイプライターのタ ブ機能には桁幅固定式(一定間隔)な「間隔固定式タブ」とタブ幅を任意に設 定できる「任意指定式タブ」の二種類があったということを明らかにするた めである。

手動式タイプライターの世界から一足飛びに現在の(電子式?)テキストエ ディターに移る。私が常用するvimエディターでタブキーを使ってみる。vim のタブ幅tabstopはデフォルトの8のままである。設定次第で挙動は変わるの かもしれないが、vimのタブキーは次のように働く。

タブ幅8で一行が80文字なら10個の区画ができる。区画幅を超える文字列を 打ち込むと隣りの区画にはみ出す。そこでタブキーを押すとはみ出した区画 を飛び越えた隣りの区画にカーソルが移る。この挙動の実際を見るにはルー ラーとなる一桁の連続数字を並べた行の前後の行に入力してみると分かりや すい。なお、ルーラー行の9と1の間の数をカラム番号の10位の数字としてい る。vimのカラム番号は左端が1であるが、emacsでは0を使う。ここではvim 式にカラム番号を振ることにする。

asd	qwe	zxcv	jkl	uiop	rtyu	hjkl  (はみ出し無し)
1234567891123456789212345678931234567894123456789512345678961234567897
h	h	h	h	h	h	h	h	h
qwertyuiop	zxcvbnm	poiu	mnbvcxz*	edc   (はみ出し有り)
(注)hはタブ区間の先頭(head)である。タブ文字はhの左隣りに入る。カラム 番号の9と1の間の数字はカラム番号の10位の数である。

連続文字列どうしの間にはタブ文字が入っている。8連続文字の隣りは空き 区画になる。そうしないと区切りが分からない。したがって、タブ文字の文 字幅はスペース1個から連続8個(タブ区画に文字があれば7個まで)スペース のどれかに相当する。タブ区画に書き込まれた文字列の後ろに文字を追加挿 入しても残り一文字になるまで見かけは変わらない。区画幅分の文字を書き 込むと隣りは空き区画になる。つまり、タブ幅の区画にはタブ幅より1個だ け少ない文字数までを収めることができる(タブ幅8の区画には7文字までを 収容できる)。以上は手動タイプライターの間隔固定式タブと同じである。

次にemacsの自然言語(プログラムでないプレインテキストをつくる)モード でタブキーを使ってみる。emacsでは、タブを打ち込むとタブを入れようと する現在行の前の(先駆け、直前の)行における次の文字位置にカーソルが移 動する。

vimは固定幅(位置)のタブ位置にカーソルが移動するに対して、emacsでは直 前の行に列島状に散らばった文字塊(連続文字列)の先頭と同じ位置にカーソ ルが飛ぶ。なお、タブ幅より長い空白列をemacsは、tab-width(デフォルト は8)相当のタブに置き換えて、残った部分をスペースにする。

直前の行の文字位置に合わせてカーソルを飛ばすemacs方式は機械式の手動 タイプライターにはみられない動作である。電子式(?)なればこそ実現でき る機能といえる。(やはり、emacsはタダモノではない)

asd   qwe    zxcv         jkl    (スペース区切り)
asd   qwe    zxcv	  jkl    (タブ・スペース区切り)
qw    uiop   mnb	  edc    (emacsでタブを使う)
qw	uiop	mnb	edc      (vimでタブを使う)
1234567891123456789212345678931234567894123456789512345678961234567897
h	h	h	h	h	h	h	h	h
(注)hはタブ区間の先頭(head)である。タブ文字はhの左隣りに入る。カラム 番号の9と1の間の数字はカラム番号の10位の数である。

おそらく殆どのテキストエディターが「間隔固定式タブ」である。秀丸エ ディターもデフォルトは間隔固定式タブである。秀丸は設定により任意指定 式タブにすることもできる。秀丸の編集画面最上段にあるルーラーで自由位 置にタブ位置を設定できる。マウス操作で設定する。ただし、直前の行の文 字塊の先頭に合わせて自動的にタブが入るわけではない。

emacsの解説によると入力中の直前の行に含まれる連続スペース文字列の末 尾位置を参照してタブ位置を決めているらしい。ワードプロセッサーの(マ イクロソフト)ワードなどでも、前行の何個かに分かれた文字塊の始まり位 置にタブキーでカーソルが飛んだことを憶えている。

ちなみに, text-mode では直前の行に
This program is free software; you can redistribute it and/or modify
のような文章があれば,スペースの位置が「 tab-stop-list 」に設定されま す.(引用終わり)

普段はワープロを使うことがなく常用のパソコンにもワープロソフトは入れ てない。ワープロでのタブキーの効果を再検討することができない。ふと、 emacsでのタブキーはどんな動きだったかなと試してみる。ワープロ並みに 任意指定式タブのように使えることをみつける。サスガニ、emacsはスゴ イ。

vimでも、emacsのように前行を参照する自動で任意指定式なタブにならない だろうかと調べてみたが分からない。あらかじめタブ位置を設定してから文 字を打ち込むのではそれほど便利とはいえない。間隔固定式なタブ設定だけ しかないよりはマシであるが、前もってタブ位置を設定するのが面倒であ る。

普段の物書きに使うテキストエディターでは、できるだけタブキーを使わな いようにしている。タブ幅の設定はエディターにより一定しない。テキスト ファイルを開くソフト次第でタブがどのように表示されるかは分からない。 ブラウザでテキストファイルを開いたときに、見栄えが変わることもある。

vimのタブ設定は、デフォルトのnoexpandtab(タブキーが押されたらタブ文 字を入れる。expandtabにするとタブ幅に相当する長さのスペース文字列を 入れるようになる)のままにしている。タブキーを使わないようにしている が、vimが勝手にタブ文字を挿入することがある。

今までのタブ文字退治法(タブ文字をスペース文字に置き換える)は、 「/(Tab文字)」検索(ミニバッファには「/^I」と表示される)で該当箇所を ハイライト表示させておいてから、一箇所ずつシラミつぶしに手作業でス ペースに置換していた。タブ文字の文字幅はスペース1個分から8個分のどれ かになるので、タブ文字を単純に8個連続スペースで置き換えるわけにはい かない。今回、vimなら次の手順でバッサリと処理できることを知る。

  1. 「:set expandetab」(「: se et」に省略可)
  2. 「:[range]retab」(「:[range]ret」に省略可)
  3. 「:set noexpandtab」(「:se noet」に省略可、デフォルトに戻す)
(注)[range]は[(開始行番号),(終了行番号)]で指定する。単一行なら行番号 だけ(カンマなし)を指定する。実行結果が確認できるようにハイライトサー チをオンにして「/(Tab文字) 」を実行しておくとよい。ハイライトサーチ は「:set hlsearch」(省略形は:se hls)とする。元に戻すには「:se nohls」を使う。

なお、emacsでは、タブ文字をスペース文字に置換したい範囲を指定してか ら「M-x untabify」とすればよい。

見かけを変えることなくタブ(ストップ)を連続スペース文字列に変換する方 法のうち、emacsの方法は既に知っていた。同じことをvimでやる方法を知ら なかった。タブの起源を調べてゆくなかでそれを知ることができた。

[蛇足]

emacsやvi/vimにおける編集作業(切ったり貼ったり置き換えたりの変更作 業)には、より簡単な、そしてより速い方法がある。初めのうちは繰り返し の多い「どんくさい方法」しかできない。なにごとも一辺には憶えられな い。最低限の操縦法から出発するのだから仕方ない。面倒くささにウンザリ して裏技はないかと探すようになる。いわゆるチップス(tips、小技・裏技) を身につけるには時間がかかる。このことについて、次は名言とおもう。

難しいのも、奥深いのも、いいじゃないですか。ずっと使うものであれば、 学ぶところがなくなるよりも、学びきれないほど奥深い方がきっといい。
(引用終わり)

vi/vimはモードがらみの間違いが多い。毎日vimを使っていても、しょっ ちゅう間違える。一日を通して一度もvimのモードを取り違えないなんてこ とは絶対に有り得ない。それほど厄介なvimを使い続けている。とどのつま りは「慣れた道具が一番」に落ち着く。めったに使わない道具の使い方はす ぐに忘れてしまう。他の道具の使い方を調べなおすよりは、不便であっても 使い慣れた道具がよい。いわば腐れ縁である。

不便の中にも便益(便利)はある。寄り道・回り道は時間の無駄(不便)である が意外な発見というオマケ(便益)がついてくる。逆に、便利は不便を連れて くる。例えば、ケータイの便利は、それを忘れたときの不便を連れてくる。 便利になる前は不便と感じてない。不便が当たり前だったのである。

vi/vimはとってもヤッカイで不便、でもvi/vimしか選択肢がないならvi/vim を使うしかない。そういう時代がはるか昔になった現在でも、vi/vimを使っ ている人は多いらしい。きっといいことがあるに違いない。vimを試してみ るのも悪くはない。

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

« 2013年7月 | トップページ | 2013年9月 »