vim ( ビム )

環境 :Vine 4.1
Web 1:Vim the editor
Web 2:The Vi Lovers Home Page
Web 3:viを使い倒そう
Web 4:JVim3非公式ガイド
Web 5:vim日本語マニュアル
Web 6:名無しのVIM使い
Web 7:見えない文字を見えるようにする
Web 8:bvi

Contents


DOS/Windows 系からの移行ユーザの為の説明

DOS/Windows 系( 以後DOS 系と呼称します )からUnix系に移行して、最も戸惑うのがeditorではないでしょうか。実は、vim は他のeditorとは動作が異なるのです。所が、この動作の違いについて説明をせずに、いきなりコマンドの説明から始まるので、結局vim を理解出来ないのです。そこで、ここではユーザが戸惑う部分について説明します。

さて、実際のvim の使用感ですが、なれると一般的なeditorよりも便利というのが正直な感想です。特に入力後の修正は、大量のコマンド操作を連続してストレス無く行えるので、比較にならないくらい便利です。コマンドも他のEditerよりも覚えやすい印象を受けました。他のEditerが初心者を意識する余り、中級者レベルどまりなのと異なり、vim は上級者向けという所でしょうか。

モードについて

使用用語他

コマンドモード

コマンドモードのコマンドについて説明していますが、一部exモードのコマンドも有ります。

ビジュアルモード

ビジュアルモードで使用出来るコマンドは以下と、コマンドモードの項目mode で[ v ] が記載されているコマンドです。

CommandSpell explanation
v visual 文字単位で領域選択開始・再度押すとビジュアルモードの終了
V visual 行単位で領域選択開始・再度押すとビジュアルモードの終了
^vvisual 短形モードで領域選択開始、再度押すとビジュアルモードの終了
o 選択範囲の先頭と末尾に交互に移動、移動後に領域拡張可
o 選択領域内現行の反対側の端へ移動、移動後に領域拡張可
gv 現在と前回の領域選択範囲をトグルする。又は、最後に選択した範囲を再選択する。
u 選択した領域の文字を大文字に変更
u 選択した領域の文字を小文字に変更

インサートモード

Commandexplanation
^D現行を左へシフト
^T現行を右へシフト
^U現行の入力済み文字を全部削除
^Wカーソル前の単語を削除
^Nカーソル位置後の同じ単語に補間
^Pカーソル位置前の同じ単語に補間
^V制御コードを入力
^A前回入力したテキストの挿入
^Eカーソル位置の次行の文字を挿入
^L一時的にコマンドモードへ
^Oコマンドモードのコマンドを1 回実行
^H<Back Space>
^I<TAB>
^J<Enter>
^M<Enter>
^C<Esc>
^[<Esc>
^^<Esc>
^Gプレフイックス
^K合字を入力
^Q次にタイプする文字をそのまま入力
^Rレジスタの内容を入力
^B無し
^F無し
^S無し
^X無し
^Y無し
^Z無し
^]無し

環境設定

( ) 内は逆設定。[ ] は省略形です。

起動オプション

Tips

参考設定例

参考までに、私の使用している設定ファイルを置いておきます。

vimrc
gvimrc

[ ^F, ii, hh, jj, kk, ll ]でインサートモードから抜け出せるようにする。

[ ~/.vimrc ]内に以下を記述します。

                :imap <c-f> <esc>
                :imap ii <esc>
                :imap hh <esc>
                :imap jj <esc>jl
                :imap kk <esc>kl
                :imap ll <esc>ll

[ alt-h,j,k,l ]でインサートモードから抜け出せるようにする。

vim の場合は、ターミナル側にて設定します。gvimの場合は、以下のように[ ~/.gvimrc ] 内に記述します。

                set winaltkeys=no
                :imap <a-h> <esc>
                :imap <a-j> <esc>
                :imap <a-k> <esc>
                :imap <a-l> <esc>

※ ターミナル側で設定した場合、vim側での[ alt ]関連設定は無効となります。

※ 通常、gvimでは [ alt-h ] はヘルプとなるので使用出来ませんが、winaltkeysでメニューをOFF にすれば使用出来ます。 #1

文字化けする

文字化けする場合は、以下のようにエンコーディングを指定すれば、指定したエンコーディングで読み込まれるので文字化けは解消します( 指定出来るエンコーディングは後述を参照 )。

                                    $ vim "+e ++enc=cp932 fileName"
                                    :e  ++enc=cp932 fileName

所が、自動判別が優先されて文字化けが解消しない場合が有ります。そのような場合は以下のようにすれば、文字化けが解消します。

補足

設定項目
  • encoding[ enc ]

    vimが内部で使用しているエンコーディングで、通常はlocaleと同じに設定されます

  • fileencoding[ fenc ]

    編集対象のファイルのエンコーディングです。

  • termencoding[ tenc ]

    ターミナルのエンコーディングで、vimテキストデータの表示と入力に使用され、通常はlocaleと同じに設定されます。

  • ++enc

    指定されたエンコーディングでファイルを開く為のオプションで、++encに設定された内容は、fileencodingに引き継がれます( encodingに引き継がれる分けでは無いので注意して下さい )。

説明

vim 起動時のエンコーディングの指定は、以下のように設定され、

                                    encoding        ←  ロケールの値がそのまま設定される。
                                    fileencoding    ←  ファイルの文字コードの自動判別結果が設定される。

ファイル読み込み( 起動 )時に[ fileencoding ]の値に基づいて、[ encoding ]で指定されている文字コードに変換して( 同じ場合は変換されません )、バッファに格納します。

従って、[ fileencoding ]に正しいエンコーディングが設定されていれば、[ endodign ]で指定している形式に変換されるので、何の問題も無いのですが、[ fileencoding ]の値が間違っていると、バッファに格納される文字コードと[ encoding ]の内容が異なる事に成る為、文字化けとなります。

通常、間違える時はロケールの値となりますから、[ encoding = fileencoding ] となり無変換で読み込まれます( [ fileencoding ]が、とんでもない設定になっている場合は[ :e ++enc=euc-jp fileName ]でロケールに合わせます )。従って、[ encoding ]の内容を本来の文字コードに合わせると文字化けは解消されますが、このままでは[ fileencoding ]と異なる為、セーブ時に変換されます。そこで、[ fileencoding ]の値も本来の文字コードに設定しなおす事となります。

尚、[ encoding ]と[ fileencoding ]は、単にエンコーディングの値を保存しているだけですから、設定を変更してもバッファ内のテキストデータ等は変換されません。但し、ファイルのread/write( 起動時のファイル読み込みを含む )時には、この設定に基づいて変換される事となります。又、cp932 と sjis 間でも変換されるので、注意して下さい。

ちなみに[ encoding ]や[ fileencoding ]の値を変更してから[ :e! ]とすると、自動判別が再度行われるので[ fileencoding ]は元に戻りますが、[ encoding ]は戻りませんから、状況に依っては複雑になる事があるかもしれません。

バイナリファイルの編集。


#1 gvimで最初に探したのが此の機能です。vim を使用するユーザがメニュからの選択など行うハズもなく、メニュモードがdefaultでONなのは不可解です。

#2 [ shift_jis ]と記載しているWeb が多数存在し、実際使用出来ますが説明書には記載されていません( localeには記載が有りますが、encodingには有りません )。

#3 一覧表には無いのですが、設定例等で記載が有り、使用出来るようです。


This is K.Moriyama's Web. Copyright 2005-2006 by K.Moriyama All rights reserved.
Original : 2007-06-23 ; updated : 2009-03-01 ;
vim Valid XHTML 1.0!