6月になったので、「いまだに(Vi | Vim)と仲良くできねえ!」という方にチートシートを捧げます
「いまだにVim (もしくはVi)と仲良くできねえ!」という方が僕の身の周りに多いような印象を受けました。
「計算機センターでのサーバマシン(エディタはVim)と触れ合うのがストレスでたまらない!」
「git のコミットログを書こうとしたら変なエディタ(Vim の事)が起動してエラい目に遭った!」
などという苦情が多数寄せられており、Vim 派閥としては心苦しい限りです。
こうしたVim との不仲につけ込んで、優秀な人材がEmacs 派閥に取り込まれるのを看過するわけには行きません。
ので、チートシートを捧げます。
ほとんど僕が使っているコマンド群です。覚える量は多くありませんが、結構快適に作業が出来るはずです。
(というか、これくらいしかコマンドを知らないので……)
その前に、Vim を楽しく使うに当たってやっておくとよいこと
CapsLock キーをCtrl にリプレースする方法に関しては、
こちら
Windows7でCtrlキーとCapsキーを入れ替える一番簡単な方法 - モスマン
や、こちら
ubuntu 10.10 にて capslock を ctrlにする (capsもctrlも両方ctrlキーにする) - 計算機と戯れる日々
なんかが参考になります。
Vim だけに限らず、Emacs 教の硬派な方もCapsLock をCtrl に変えておくと良いと思います。
間違えやすいので注意
OS の保持しているクリップボード情報と、Vim の保持しているクリップボード情報は異なっています。マウスの右クリックメニュー等でコピーした内容を、Vim上の'p' キーによってペーストする事は出来ません。
(この場合は素直に、Vim の上で右クリックし貼り付けを行えば良いと思います)
また、その逆も然りです。Vim 上で'yy' などによってコピー(ヤンク)した内容を右クリックメニューで貼り付ける事は出来ません。
(.vimrcの設定によってはここら辺のクリップボード情報を共有させれた気もしますので、興味のある方は調べて見てください)
ここからチートシート
<読み方>'キー + キー' で表されているものは同時に押して下さい。
キーが連続で書かれている場合は、左に書かれているキーから順に押下してください。
e.g.
Ctrl + a :Ctrl キーとa キーを同時に押下してください。
abc:a キーを押してからb キーを押して、それからc キーを押して下さい
なお、独断と偏見で、便利っぽいコマンドは太字にしてあります。
最低でもこれを覚えておかないと死ねる
Esc | 入力・ヴィジュアルモードから抜けてコマンドモードに移行する |
Ctrl + [ | 同上。僕的にはEsc よりもこっちの方がオススメです*2 |
i | 入力モードに移行する |
:q | Vim を終了する |
:q! | 作業内容を破棄してVim を終了する。どうしても終了したい時などに |
:w | 作業内容を保存する |
:wq | 作業内容を保存してからVim を終了する。 |
u | Undo する |
Ctrl + r | Redo する |
カーソル移動編(コマンドモードの時にタイプしてください)
j, k. h, l | (それぞれ)下、上、左、右にカーソルを1マス移動させる |
Ctrl + f | 下方向にページ送り(Page Down キーと同じ働き) |
Ctrl + b | 上方向にページ送り(Page Up キーと同じ働き) |
gg | 一番上(1行目)にジャンプする |
Shift + g | 一番下(最終行)にジャンプする |
[行番号]gg | 指定した行番号にジャンプする。たとえは'123gg' だと123行目にジャンプする |
0(ゼロ) | 行頭に飛ぶ |
$ | 行末に飛ぶ |
w | 次の単語に飛ぶ |
b | 前の単語に飛ぶ |
% | 対応するカッコに飛ぶ |
入力モード移行編(コマンドモードの時にタイプしてください)
Shift + i | 行頭に飛んでから入力モードに移行する |
a | 1つ後ろにカーソル移動してから入力モードに移行する |
Shift + a | 行末に飛んでから入力モードに移行する |
s | カーソルが置いてある位置にある1文字を削除してから入力モードに移行する |
Shift + s | カーソルが置いてある行の内容を全て削除してから入力モードに移行する |
Shift + r | 置換モード(Insertキーを押した状態と等価)で入力モードに移行する |
cw | カーソルが置いてある位置にある1単語を削除してから入力モードに移行する |
ヴィジュアルモード関連編(コマンドモードの時にタイプしてください)
v | ヴィジュアルモードに移行する |
Ctrl + v | 矩形モードでヴィジュアルモードに移行する |
(範囲指定されている時に)y | ヴィジュアルモードで選択されている範囲の文字列をコピー(ヤンク)する |
(範囲指定されている時に)d | ヴィジュアルモードで選択されている範囲の文字列を削除(実は切り取り)する |
(矩形モードで範囲指定されている時に) > | 指定されている範囲の全ての行を右方向にインデントする |
(矩形モードで範囲指定されている時に) | 指定されている範囲の全ての行を左方向にインデントする |
文字列操作
x | 1文字を削除する |
dw | 1単語を削除する |
yy | 行ごとコピーする |
dd | 行ごと削除(実は切り取り)する |
p | コピーもしくはカットした内容をペーストする(行ごとコピーしていた場合は次の行にペーストされる) |
Shift + j | 現在の行と次の行を結合する(現在の行の後ろに次の行の内容を連結する) |
Shift + ^ | カーソル位置にある英字大文字を小文字に、またはその逆変換を行う |
== | syntax の設定に従って自動インデントする |
>> | 右方向にインデントする |
<< | 左方向にインデントする |
検索・置換
/[検索したい文字列] | 検索したい文字列で検索する |
(検索状態で)n | 次の検索候補にジャンプする |
(検索状態で)Shift + n | 前の検索候補にジャンプする |
:%s/[置換対象文字列]/[置換する文字列]/[オプション] | 置換する |