viの使い方

Menu Menu

vi は、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 を知っていると便利です。


tag mode


Shinji KONO / Tue Aug 3 09:45:13 2010