もふもふ技術部

vimの基本的な使い方


概要

最近はもっぱらvimを使っているので、使い方の中で一番基本的なところをまとめてみる。

文字を入力する

vimはキーボードでモードを切り替えながら使う。起動した直後は「通常モード」(Normal-Mode)になっている。この状態だと文字を打つことができない。

「i」「a」を押すと「編集モード」(Insert-mode)になる。これで文字が打てる。

最初はモード切り替えを面倒だと思うかもしれないけど、複数のモードを使いこなせるようになれば、逆に便利だと感じられるようになる。

通常モードに戻る

「編集モード」になると文字は打てるけど、保存とか終了をするためのコマンドは打てない。コマンドが打ちたい時は「esc」を押して「通常モード」に戻る。

現状自分が何状態なのかよくわからなくなったら、とりあえず「esc」を打って通常モードに戻ろう。

保存/終了

文字を保存するには「通常モード」の状態で「:w」と入力する。これで編集した文字が保存される。

vimを終了させたい場合は、「:q」と入力する。何も編集していなければ、これでvimが終了する。

何かしら文字を編集した状態で「:q」で保存しようとすると、「最後の変更が保存されていません (! を追加で変更を破棄)」というエラーが出る。

保存しないで閉じたらあかんでしょ、という意味のエラーなので、「:wq」と打って保存しつつ終了させるか、「:q!」と打って、強制的に保存せずに終了する。

削除

文字を削除したい場合、普通に「編集モード」でDELやBackSpaceでも消せるけど、「通常モード」で「x」を押すと消せたりもします。

あと、よく使うのが「dd」。カーソルがいる行を削除します。

「C」だと、カーソルの位置から行末までが削除されます。

検索

文字を検索したい場合は「通常モード」で、「/」(スラッシュ)を打って、直後に検索したい文字列を入力する。

たとえば「/山」と打てば、「山」で文書が検索される。

次の検索結果を見たい場合は、「n」で次の検索結果へ移動する。大文字で「N」を入力すると1つ前の検索結果へ移動する。

大文字小文字を区別したくない場合は、「:set ic」と打ちます。区別する状態に戻したい時は「:set noic」。

検索には普通に正規表現も使えます。a-zが3回繰り返されるとかは「/[a-z]\{3} 」のように書けます。バックスラッシュが付くことに注意。

コピー&ペースト

コピー&ペーストは、うちみたいにgnomeの端末使ってる場合は、マウスで文字を選択して「Ctrl + Shift + c」でコピー、「編集モード」になっている状態で「Ctrl + Shift + v」でペーストできます。

vimの機能でコピーする場合は、まず「v」で「ビジュアルモード」になります。この状態でカーソルを移動すると、移動したところが反転します。コピーしたい文字が反転したら「y」でコピーできます。

行ごとコピーする場合は簡単で、「yy」と入力するだけ。

ペーストする時は「p」と押すだけでいけます。

アンドゥ/リドゥ

アンドゥは「通常モード」で「u」を押せば実行されます。リドゥは「Ctrl + r」です。

慣れないうちは思わず「Ctrl + z」を押してしまうかもしれませんが、このへんは慣れです。使い込んでいればWindowsで普通のエディタを使っている時にも、思わず「u」でアンドゥしようとするようになります。

繰り返す

vimさんの繰り返し機能はとても便利。「数字+コマンド」を打つと、数字の回数だけコマンドを実行します。

たとえば「3x」と打つと「x = 1文字消す」を3回繰り返すことになり、カーソルの位置から3文字が削除されます。100行くらいまとめて消したい場合は「100dd」と打てば、その場所から100行が削除されます。

カーソルを30文字くらい右へ進めたい時は、「30l」と打てばOKです(「l」は右へカーソルを1つ進める)。

カーソルを移動する

「数字 + G」で指定した行数に飛べます。たとえば「10G」と入力すると、10行目に飛びます。

「G」とだけ入力すると、行末に飛びます。

「w」d次の単語に飛びます。単語と言ってもわかち書きしてるわけじゃないので日本語だと飛び方はアレですが、プログラム書いてる時はそこそこに良い飛び方をします。個人的には「Ctrl + →」で移動してますが。

「Ctrl + f」は次頁へ飛びます。「Ctrl + B」は前頁です。一応「PageUp」や「PageDown」も使える場合が多いです。

あとは「0」で行頭、「$」で行末に飛んだりもします。普通にHomeキーやEndキーでも飛べる場合が多いですが、ホームポジションマニアになるとそこまで手を伸ばすのが億劫になります。

置換

置換の書きやすいところも、vimさんのありがたいところです。

「:%s/置換前/置換後/gc」のように書きます。後ろの「g」は全部置換するという意味、「c」は置換する時に確認するという意味です。「g」を指定しないと最初の1個だけが置換されます。「c」を指定しないと確認メッセージなしで問答無用で置換されます。

検索と同じく、正規表現でマッチさせることも可能です。

キーマクロ

動作を記憶しておいて再現できる、キーマクロ機能も付いてます。しかもかなりの数のマクロを記憶できます。

「qa」と入力すると、キーの記録が始まります。その状態でいろいろ処理して、終わったら「q」を押すと記録ができます。

たとえば「通常モードになる」 → 「qa」 → 「編集モードになってあいうえおと書く」 → 「通常モードに戻る」 → 「q」という手順で「あいうえおと書くマクロ」が出来上がります。

実行する時は、「@a」です。

上の例では「a」に保存していますが、「qb」で登録すれば「@b」で、「qc」で登録すれば「@c」で呼び出すことができます。たくさん登録し放題です。

ついでに繰り返して実行することもできます。「10@a」とか書けば、「a」に登録したマクロが10回実行されます。とても便利です。

The following two tabs change content below.
masato watanabe

masato watanabe

もふもふ部ブレーン。プログラマ兼ライター。