モード
モードの切り替え
i挿入モード(カーソルの前)
a挿入モード(カーソルの後)
o下に行を挿入して挿入モードへ
O上に行を挿入して挿入モードへ
vビジュアルモード(文字)
Vビジュアルモード(行)
Ctrl+v矩形ビジュアルモード
:コマンドラインモード
R置換モード
Escノーマルモードに戻る
ナビゲーション
文字と行の移動
h j k l左、下、上、右
0 / ^行頭 / 最初の非空白文字
$行末
w / W次の単語 / WORD
b / B前の単語 / WORD
e / E単語 / WORD の末尾
f{c} / F{c}文字を前方 / 後方に検索
t{c} / T{c}文字の直前 / 直後まで前方 / 後方に移動
画面とファイルの移動
gg / G最初 / 最後の行へ
:{n}n 行目へ
Ctrl+d / Ctrl+u半ページ下 / 上
Ctrl+f / Ctrl+b1 ページ下 / 上
H / M / L画面の上 / 中 / 下
%対応する括弧へジャンプ
編集
挿入と追記
I行頭に挿入
A行末に追記
ea単語の末尾に追記
gi最後の挿入位置に挿入
削除と変更
x / Xカーソル下 / 前の文字を削除
dd行を削除
dw単語を削除
d$ / D行末まで削除
cc / S行全体を変更
cw単語を変更
c$ / C行末まで変更
ci" / ci(クォート / 括弧内を変更
コピーと貼り付け
yy行をヤンク(コピー)
yw単語をヤンク
y$行末までヤンク
p / Pカーソルの後 / 前に貼り付け
J下の行を現在の行に結合
アンドゥと繰り返し
uアンドゥ
Ctrl+rリドゥ
.最後のコマンドを繰り返す
検索と置換
検索
/pattern前方検索
?pattern後方検索
n / N次 / 前のマッチへ
*カーソル下の単語を前方検索
#カーソル下の単語を後方検索
置換
:s/old/new/ " replace first on line :s/old/new/g " replace all on line :%s/old/new/g " replace all in file :%s/old/new/gc " replace all, confirm each
ビジュアルモード
選択
v文字選択を開始
V行選択を開始
Ctrl+v矩形選択を開始
o選択の反対側の端へ移動
gv直前のビジュアル選択を再選択
選択に対するアクション
d選択を削除
y選択をヤンク
c選択を変更
>選択をインデント
<選択のインデントを解除
~大文字・小文字を切り替え
U / u選択を大文字 / 小文字に
バッファとウィンドウ
バッファ
:ls開いているバッファを一覧表示
:bn / :bp次 / 前のバッファ
:b{n}バッファ n へ
:bd現在のバッファを閉じる
:e file新しいバッファでファイルを開く
ウィンドウ
:sp file水平分割
:vsp file垂直分割
Ctrl+w h/j/k/lウィンドウへ移動
Ctrl+w =ウィンドウサイズを均等化
Ctrl+w qウィンドウを閉じる
タブ
:tabnew file新しいタブでファイルを開く
gt / gT次 / 前のタブ
:tabclose現在のタブを閉じる
レジスタ
レジスタの使用
"ayレジスタ a にヤンク
"apレジスタ a から貼り付け
"Ayレジスタ a にヤンクを追記
:regすべてのレジスタを表示
特殊レジスタ
""無名(最後の削除/ヤンク)
"0最後のヤンク
"+システムクリップボード
"/"最後の検索パターン
".最後に挿入したテキスト
"_ブラックホール(破棄)
マクロ
記録と再生
q{a}レジスタ a へのマクロ記録を開始
q記録を停止
@{a}レジスタ a のマクロを再生
@@最後のマクロを再実行
5@aマクロ a を 5 回再生
マクロの例
qa " start recording into a I// " insert // at line start Esc j " return to normal, move down q " stop recording 10@a " comment next 10 lines
設定
一般的なオプション
:set number " show line numbers :set relativenumber " relative line numbers :set tabstop=4 " tab width :set expandtab " spaces instead of tabs :set ignorecase " case-insensitive search
表示と動作
:set wrap / nowrap " toggle line wrapping :set hlsearch " highlight search matches :set incsearch " incremental search :set cursorline " highlight current line :syntax on " enable syntax highlighting
ファイル操作
保存と終了
:w保存
:w file名前をつけて保存
:q終了(未保存ならエラー)
:q!保存せずに終了
:wq / :x / ZZ保存して終了
:waすべてのバッファを保存
:qaすべてのバッファを終了
ファイル情報と外部コマンド
Ctrl+gファイル情報を表示
:!cmdシェルコマンドを実行
:r !cmdコマンドの出力を挿入
:r fileファイルの内容を挿入
テキストオブジェクト
内側と周囲のオブジェクト
iw / aw単語の内側 / 周囲
is / as文の内側 / 周囲
ip / ap段落の内側 / 周囲
i" / a"ダブルクォートの内側 / 周囲
i' / a'シングルクォートの内側 / 周囲
i( / a(括弧の内側 / 周囲
i{ / a{波括弧の内側 / 周囲
it / atHTML タグの内側 / 周囲
よく使うコンビ
ciw " change inner word di" " delete inside quotes ya{ " yank around braces vip " select inner paragraph
マークとジャンプ
マーク
m{a}カーソル位置にマーク a を設定
'aマーク a の行へジャンプ
`aマーク a の正確な位置へジャンプ
:marksすべてのマークを一覧表示
ジャンプリスト
Ctrl+o前の位置へジャンプ
Ctrl+i次の位置へジャンプ
:jumpsジャンプリストを表示
''最後のジャンプ位置へジャンプ