Vimの操作方法メモ
1. モードについて
- ノーマルモード: 移動やテキストの変更など、基本的なコマンドを実行するモードです。
- インサートモード: テキストの入力を行うモードです。
- ビジュアルモード: テキストを選択するモードです。
- コマンドラインモード: コマンドを入力して実行するモードです。
2. ノーマルモード
移動
h: 左に移動H: 今見えている場所の先頭にカーソル移動
j: 下に移動J: 今見えている場所の最終行の先頭にカーソル移動
k: 上に移動l: 右に移動w: 次の単語へ移動2wのように手前に数字を付けることで単語数を指定可能
b: 前の単語へ移動2bのように手前に数字を付けることで単語数を指定可能
0: 行の先頭に移動$: 行の末尾に移動Ctrl + u: Page UpCtrl + d: Page Down
削除
dw: カーソル位置後方の単語を削除- 次の単語手前のスペースも削除
- 移動の時と同様,
d2wのようにして単語数を指定可能
de: カーソル位置後方の単語を削除- 次の単語手前のスペースは削除しない
d$orD: カーソル位置後方の行を削除dd: 行を丸ごと削除2ddのようにして行数を指定可能
検索
/[検索キーワード]: 文字列を前方検索n: 次の検索一致場所に飛ぶN: 前の検索一致場所に飛ぶ/[検索キーワード]\c: 大文字小文字の区別なく検索
?[検索キーワード]: 文字列を後方検索
テキスト変更
x: カーソル位置の1文字を削除r: カーソル位置の1文字を置換R: カーソル位置から文字の置換を開始u: 最後の操作をアンドゥCtrl + r: アンドゥをリドゥ
3. インサートモード
i: ノーマルモードからインサートモードへ変更(カーソル位置で開始)I: 行の先頭でインサートモードに入るa: カーソルの次の位置からインサートモードに入るA: 行の末尾でインサートモードに入るce: カーソル位置後方の単語を削除し,インサートモードに入るc$: カーソル位置後方の行を削除し,インサートモードに入るo: 下に行を追加してインサートモードに入るO: 上に行を追加してインサートモードに入るEsc: インサートモードからノーマルモードへ戻る
4. ビジュアルモード
v: 文字単位での選択モードに入るV: 行単位での選択モードに入るCtrl + v: 矩形選択モードに入るy: 選択範囲をコピー
5. コマンドラインモード
Tab補完,Ctrl + d によるコマンド一覧表示が可能
:: ノーマルモードからコマンドラインモードに入る:w: ファイルを保存:w [ファイルパス]: 指定したファイルパスに保存
:q: Vimを終了:wq: ファイルを保存して終了:e [ファイルパス]: ファイルを開く:![コマンド]: コマンド実行(例 ::!ls)
6. テキスト編集の一例
- コピー & ペースト
yw: 単語をコピーyy: 行をコピーp: ペースト- 直前に削除したものもペースト可能
- カット & ペースト
dd: 行をカットp: ペースト
7. その他の便利なキーバインド
gg: ファイルの先頭へ移動G: ファイルの末尾へ移動100Gのように指定することで,100行目に移動可能
Ctrl + g: ファイル名,ファイル内のカーソル位置(行数)が分かる:s/old/new: カーソル位置以降で最初の「old」を「new」で置換:s/old/new/g: カーソル位置の行内の全ての「old」を「new」で置換:#,#s/old/new/g: #~#行内の全ての「old」を「new」で置換:%s/old/new/g: ファイル内の全ての「old」を「new」で置換:%s/old/new/gc: ファイル内の全ての「old」を探し,ひとつずつ「new」で置換するかの確認を行う:%s/\Cold/new: 大文字,小文字を区別して置換
u: アンドゥCtrl + r: リドゥ%: (,[,{ にカーソルを合わせて実行すると,対応する),],}に飛ぶ(逆もしかり)
8. 練習
vimtutor
ターミナルで以下を実行すると,チュートリアルが始まる.とりあえずで操作感を掴むのにちょうどいい.ただし英語.これが一番体系的に知ることができる.
vimtutor
VIM Adventures
基本的な移動だけを使ったゲーム.
Learn VIM while playing a game - VIM Adventures
VimGenuus
クイズ形式で,出されたお題に対してコマンドを押して答える.
OpenVIM
キーボードを押しながら,Vimのチュートリアルができる.
9. 参考
かなり多くのコマンドが知れる.たぶんここで紹介されているコマンドをすべて使いこなせていたらかなりの上級者.
↓日本語訳