タイトル【Darwinシリーズ】エディタはvi?それともemacs?カテゴリーDarwin, Darwin 1.0
作成日2000/5/24 1:43:30作成者新居雅行
UNIXでのエディタとなると、一言言いたい方は多いかも知れない。自分好みのエディタ環境を整えるというのが使いこなしているという証しでもあったりする。Darwinでのエディタ環境をざっと見てみることにしよう。
当然ながら、viが組み込まれていて、コマンドラインに「vi ファイル名」とコマンドを入れればエディタが起動される。筆者の環境では17インチのディスプレイを接続しているのだが、起動した状態では画面一杯を使ったコンソールとして機能している。しかしながら、いったんviを起動すると、80桁×24行のコンソールとして機能してしまう。つまり、画面の左上の領域だけを使ってのコンソールに切り替わってしまうのだ。
◇viは起動するが、80×24行になってしまう
 figs/darwin/DSC00015.JPG

とりあえず、このまま作業を少しして見た。キーボードの矢印キーを使ってみたが、カーソルはキーの方向に移動する。control+Fやcontro+Bでのページスクロールもできるようだ。iコマンドやaコマンドも使える。いずれにしても、基本的な編集作業は問題なくできそうだ。キーボードが英語キーの配列になっているので、JISキーボードだとコロンの位置が違っているなどちょっと迷うけど、それを気を付けていれば普通にviは使える。ちなみに、viはUNIX系OSの場合、たいがいの状況で使えるので、基本的なコマンドはできれば知っておきたいところだ。
しかしながら、viを使い、終了させても、コンソールは80桁×24行のままである。画面一杯に使うコンソールの状態には戻らない。戻す方法としては再起動意外には、emacsを起動して終了するという手段があるようだ。

一方、emacsもある。/usr/binに、emacsとemacs-20.3という実行可能な属性の付いたファイルがありサイズは同一だ。ファイル検索では20.3のソースがあるので、おそらくはemacsコマンドで20.3が起動されるものと思われる。emacsも、起動するとやはり80×24行となり、画面の左上だけで使える状態になる。

◇emacsもやはり80×24行で起動される
 figs/darwin/DSC00014.JPG

emacsはviと違って、コンソールの行列数を変えてしまうようなことはなく、終了後は前画面のコンソールに戻る。

ここで、viについて簡単に説明しておこう。viは画面にあるようにコンソールで稼動するテキストエディタだ。カーソルがあり、Mac OSで使われているようなエディタのように一見使えると思うかも知れないが、根本的な概念が大きく違い、その点を理解していないとわけがわからない。基本として、viは「コマンドモード」と「インサートモード」の2つの状態があり、起動直後はコマンドモードとなっている。コマンドモードでは、キータイプした文字が、コマンドとして解釈される。一方、インサートモードは、キータイプした文字がカーソルのところに挿入される。つまりテキストとしてインプットされるのである。この2つの状態があり、今どちらなのかを意識して使わなければならない。しかも、今どちらなのかは画面で判断できないのがちょっと取っ付きにくいところだ。
コマンドモードからインサートモードに移行するには「a」ないし「i」コマンドを入力する。これらのコマンドは、単にキーを1文字分押すだけよくreturnは必要ない。aコマンドはカーソルの文字の後、iコマンドカーソルの文字の前に挿入を始める。つまり、カーソルを挿入したい位置に移動して、aかiを押し、その後にキータイプすれば良い。なお、インサートモードの時にも、矢印キーでカーソルの移動はできる。
一方、コマンドモードに戻るには、escキーを押す。escキーは“無害”なので、モードが分からなくなったときやパニックになった時には、escキーを押しまくる。escはコマンドのキャンセルにもなる。ビープ音が鳴ると、コマンドモードでescキーを押したことを意味し、それによって確実にコマンドモードになり、最初からコマンド入力できる状態になったことが分かる。
修正した結果をファイルに書き戻したくない場合など、現状はそのままでviを終了させたいときには、コマンドモードで「:q!」とコマンド入力し、これはreturnキーを最後に押す。すると、何も変化なくviが終了する。安全策としてこれは覚えておきたい。一方、編集した結果をファイルに書き戻しさらにviを終了するときには「:wq」とコマンドを入力してreturnキーを押す。
カーソルの位置にある1文字を消したい場合には、コマンドモードで、xキーを押す。これはreturnは不要で、カーソル位置にある1文字を削除して後ろからつめる。また、「dd」コマンドにより、カーソルのある行すべてを削除して、後ろからつめる。文字列を検索したいときには「/」に続いて検索文字列を指定するが、正規表現で文字を指定してreturnキーを押す。次々に探す時には「n」コマンドを使う。
他にもコマンドがあるのだが、以上のコマンドを知っておけば、とにかく何とかなる。正直なところ、筆者もこれ以上のコマンドとなると、解説書を開いて作業している。複雑な編集となると、いっそのことviは使わないで、Mac OSにテキストファイルを持ってきて、編集後に戻すようなことをやってしまう。

emacsについては実は筆者はほとんどなじみがない。終了の方法として、control+X、control+Cを連続して行えばいいということしか知らなかったりする。詳細は、解説書などを御覧いただきたい。

ところで、JISキーボードでDarwinを使っていると、チルダの入力ができないことになっていることに気が付いた。JISキーボードには1のキーの左にはキーがない。何かいい方法はないか、思案中であるが、とりあえずはいい方法が分からない。御存じの方には教えていただければ大変ありがたい。
関連リンク