Vim初心者の私がVimを数週間使った上で最低限必要だと感じたVim操作(入力、移動 etc.)に関して簡単にまとめます。備忘録投稿です。
vimの5つのモード
実際には他にもモードがあるかもしれないが、とりあえず、この5つを押さえておけば問題ないです。
| モード | 意味 | 代表的なkey |
|---|---|---|
| NORMAL | ノーマルモード | esc, Ctrl + c, Ctrl + [ |
| INSERT | 入力モード | i |
| VISUAL | ビジュアルモード | v |
| REPLACE | 上書きモード | R |
| COMMAND | コマンドラインモード | :(コロン) |
移動
移動はノーマルモードで行います。
| key | 意味 |
|---|---|
| h | ←(左に移動) |
| j | ↓(下に移動) |
| k | ↑(上に移動) |
| l | →(右に移動) |
| e | 単語の最後へ移動 |
| w | 次の単語の先頭へ移動 |
| b | 前の単語の先頭へ移動 |
| ^ | 行の先頭文字へ移動 |
| 0 | 行頭へ移動 |
| $ | 行末へ移動 |
| gg | ファイルの先頭へ移動 |
| G | ファイルの末尾へ移動 |
| % | 対応する括弧に移動([],{},()など) |
| { | 段落の先頭に移動 |
| } | 段落の末尾に移動 |
| zz | カーソル行が画面中央に来るようにスクロール |
| Ctrl + f | ページアップ |
| Ctrl + b | ページダウン |
| Ctrl + u | 半ページアップ |
| Ctrl + d | 半ページダウン |
| Shift + m | カーソルを画面の中心へ移動 |
3つのTips
-
4j、3wなどのように数字を先頭につけると、その数字回数分移動できる。とても便利。 - コマンドラインモードで、行番号を入力し[Enter]を押すと、目的行に移動できる(つまり、ノーマルモードから**:行番号[Enter]**を押す)。
- 行内では、
f[目的の文字]で、ジャンプすることができる。いくぶん移動が楽になる。
入力1 (モードに移行前)
| key | 意味 |
|---|---|
| i | 入力モードへ |
| I | 行頭に移動して入力モードへ |
| a | カーソルの後ろに移動して入力モードへ |
| A | 行末に移動して入力モードへ |
| o | 行の下に空行を作り、行頭から入力モードへ |
| O | 行の上に空行を作り、行頭から入力モードへ |
| C | カーソルから後ろをすべて削除して入力モードへ |
入力2 (モードに移行後)
| key | 意味 |
|---|---|
| Ctrl + y | 真上の文字と同じものが入力される |
| Ctrl + e | 真下の文字と同じものが入力される |
| Ctrl + h | バックスペース |
| Ctrl + w | 単語ごとにバックスペース |
基本操作
| key | 意味 |
|---|---|
| y | ヤンク(コピー) |
| Y | 行をヤンク |
| p | カーソル後にペースト |
| P | カーソル前にペースト |
| x | カーソル下の一文字を削除 |
| X | カーソル前の一文字を削除 |
| d | 削除 |
| D | 行内のカーソル以降を削除 |
| dd | カーソルがある行を削除 |
| u | 元に戻す(undo) |
| Ctrl + r | 操作を進める |
| r | 一文字変更 |
| >> | 右へインデント |
| << | 左へインデント |
| .(ピリオド) | 直前の操作を実行 |
| q: | 履歴を確認 |
6つのTips
- 移動の時と同様に、
数字を基本操作の前につけることにより、操作を指定回数回繰り返すことができる。 -
q:で履歴を確認すれば、過去のコマンドを実行することも可能。 - コピーはヴィジュアルモードで使うことが多い。
-
diw(delete inner word)で、単語を切り取れる。 -
ya"(yank all)でダブルクォーテーションで囲まれた文字列を囲みダブルクォーテーションごとコピー。 -
yi"(yank inner)でダブルクォーテーションで囲まれた文字列をコピー(ダブルクォーテーションは除く)。
検索
| key | 意味 |
|---|---|
| * | カーソル下の単語を検索 |
| # | カーソル下の単語を検索(上方向に検索) |
| /[word] | wordを検索。n, Nでそれぞれ次と前の検索へ移動することができる |
| ?[word] | 同上(上方向に検索) |
1つのTips
- 【キーワード検索】 同じキーワードで引き続き検索したいときは、キーワードを指定せずに**/か?**を入力してEnterキーを押せばよい。
置換
| key | 意味 |
|---|---|
| :%s/hoge/fuga/g | ファイル内で全てのhogeをfugaに置換 |
| :%s/hoge/fuga/gc | 同上 + マッチした文字列を一つずつ確認しながら置換 |
| :10,20s/hoge/fuga/g | 行間(10~20行)内でマッチした文字列のみ置換 |
変更
行う内容は、削除 + インサートだが、要は変更(change)。
| key | 意味 |
|---|---|
| ce | 単語の終わりまで削除し、インサートモードへ |
| c$ | カーソルから行末まで削除し、インサートモードへ |
| ciw | 単語を削除し、インサートモードへ |
| ci( | 括弧(で囲まれた文字列を削除し、インサートモードへ |
ウィンドウ
コマンドラインモード(:タイプ後)で行う
| key | 意味 |
|---|---|
| sp | ウィンドウを上下に分割 (split) |
| vsp | ウィンドウを左右に分割 (vertically split) |
| new | 新規ウィンドウとして上下に開く |
| vnew | 新規ウィンドウとして左右に開く |
1つのTips
-
[Ctrl-w]``[Ctrl-w]で順番に移動できる。
タブ
コマンドラインモード(:タイプ後)で行う
| key | 意味 |
|---|---|
| tabnew | 新規タブを開く |
| gt | 次のタブに切り替え |
| gT | 前のタブに切り替え |
外部コマンドの実行
コマンドラインモード(:タイプ後)では!を先頭につけることで、外部コマンド(lsコマンドなど)を実行することができる。
補足(ビジュアルモードについて少し)
Vimには3つのビジュアルモードがあります。
- エディタやワープロのように文字単位で選択するビジュアルモード
- 行単位で選択するビジュアルラインモード
- 矩形で選択するビジュアルブロックモード
の3種類だ。v、V、Ctrl + vでそれぞれのビジュアルモードへ移行します。
visualモード中にshift + >を入力することで、選択範囲のインデントもできます。複数回インデントさせたい場合には数字>のように数字を加えて実行します。
参考
終わりに
Vimを数週間使った程度の私でさえ、Vimの恩恵を感じられました。移動の高速化、基本機能の充実、モード分けすることにより(keyを記憶したのち)、keyの組み合わせだけで痒い所に手が届く、等、まだまだ可能性を感じることができるテキストエディタです。
「できるエンジニアはVimを使っている」
そんなことを耳にはしていましたが、やんわりとその理由が理解できた気がします。他のエディタと比べて最初の学習コストは比較的高いですが、長いエンジニア人生、できるだけ早めに慣れておくことでますますVimの恩恵を享受することができるでしょう。
ここであげたのはVim初心者の私が、数週間という短い期間で必要としたものですので、とりあえずこれだけはマストのキー操作となると思います。