viの使い方
Menu Menuvi は、Unix特有のエディタです。Muleよりも軽くて、プログラムの編集には向いているかも知れません。もし、Unixのシステム管理をするならviを勉強しておくべきです。Mule や Emacs はUnix標準ではついてきませんから。
vi は、以下のようにファイル名を付けて起動します。このファイルをtest-file という名前でコピーして、そのまま以下のようにすると良いでしょう。
% vi test-fileさて、vi が立ち上がりましたか? 矢印キーでカーソルを動かして見て下さい。黒い四角が動くはずです。これが文字を入力したりする場所になります。しかし、vi では、カーソルキー←↓↑→の代わりに、hjkl を使うのが普通です。hjkl を使ってカーソルを動かして見て下さい。慣れると、すごく便利に感じるはずです。この他、HLM などを使うと、今表示している部分の先頭と最後と真中にいくことができます。
カーソルの動かし方と文字の入力
hjkl がカーソル移動と言うことは、このままで文字を入力することができませんよね。文字を入力する時には、insert mode に入らないといけません。insert mode に入るには、いろいろな方法がありますが、i というコマンドを使いましょう。insert mode から抜けるには ESC を押します。ESC はキーボードの右上にあるはずです。ないときにはControl-[ を使います。Control (Ctrl) キーと[を同時に押します。これは普通は ^-[ と書くことにしましょう。insert mode に対して、hjkl などのコマンドを受け付けるmodeをcommand mode ということがあります。画面の次や前に移動するには、^D, ^U を使います。^F, ^B は一画面の切替になります。
それでは、insert mode に入って文字を入力して見て下さい。ちゃんと入力できましたか? ESC で抜けた後、u として見て下さい。今、入力したのが消えます。もう一度uとするともう一度見えるはずです。vi では、直前の動作をuで取り消すことができます。ただし一度だけですけど。以下の空白に、「test input 」と入力して見ましょう。
insert mode 中ではhjklは使えません。でも、もしかするとカーソルキーは使えるかも知れません。これは設定によります。
行の先頭にいくには0(数字の0)を使います。行末にいくには$です。移動コマンドには、
w 次のword に進む e 今のwordの最後にすすむがあります。この二つは覚えておくと便利でしょう。他にもEBWebwとありますが、徐々に覚えていけば良いので、今はいらないでしょう。ここで、dw とか de とかするとなんとなく感じがつかめると思います。まとめるといかのようになります。
^B ^U k 0 b h l w $ j ^D ^F
抜け方
ZZ が普通かな。
insert mode になっている場合は、ESC で抜けてから。
書き出したくなかったら、ed コマンドを使って :q! と打ちます。
文字の消し方
後は文字を消すことができれば一通りviを使えることになります。x が一文字消去です。でも、もう少し便利なコマンドがあります。dw (delete word)としてみてください。(d の次に w を押す) これは vi が1 word だと思っているものを削除します。u は1コマンドしかやりなおしできないのでxでたくさん消すよりもこちらの方が便利です。d の次にくるのは任意の移動コマンドです。dd とすると一行消去になります。5dd とすると5行消去になります。したがって、カーソルから行末までを消すにはd$ということになります。これはDというコマンドと同じです。
d の代わりに c を使うと書き換え(change)になります。一文字直したいときには cw とするわけです。一行直したい時には cc とします。入力したあと ESC でコマンドモードに戻ることを忘れないようにしましょう。
消した文字は、viの中でバッファに蓄えられます。これをp (paste)というコマンドで張り付けることができます。したがってviで文章を移動したい時には、dコマンドを使って削除してから移動してpコマンドを使って張り付けるという手順になります。一行を入れ換えたければ ddp とします。一文字入れ換えたければ xp です。
削除したくなければ、d の後、一旦 u しても良いのですがy というコマンドがあります。y はdと同じで次に移動コマンドを使ってコピーの範囲を決めます。例えば一行複製したければ Yp とします。
もし単なる上書きをしないならば R というコマンドがあります。文字の絵を書く時とかは便利ですね。
サーチ
次に知っておくと便利なのはサーチコマンドです。/ と入力すると、一番下の行に / とでます。ここに探したい文字を入力してEnterとします。n と N で同じ文字を正逆方向に探すことができます。最初から逆に探す時には?を使います。?の場合はnとNも逆向きになります。その方が便利ですね。
先頭と最後
G で最後に移動します。0G で先頭
120 行目に行きたければ 120G
vi filename +120
として、open 時に行番号を指定することも出来ます。
フィルタ
コマンドモードで、!!lsとやって見て下さい。何が起きたかわかるかな? u で元に戻ります。
ed コマンド
: と打つと、一番下にカーソルが移り、ed コマンドを打つことができます。もっとも使うのは、:s の置換でしょう。ファイル名を変えて書き出したい時。
:w! filename違うファイルを開けたい時、
:e! filename
vim
vim だと、マルチウィンドが使えます。
:split ^w :close :onlyあたり。
:help で使うと便利。
vimrc
~/.vimrc とかかな。UTF-8優先の設定になってます。insert mode の中で、Emacs like な移動が使えるようにしています。マルチウィンドの操作もEmacsに近くしてあります。
vim tutor
vimtutor jpってのがあるらしい。
:help も試してみよう。
そのためには、tag mode を知っていると便利です。