全般
- :h[elp] keyword - 「keyword」のヘルプを開く
- :sav[eas] file - 名前を付けて保存
- :clo[se] - 現在のペインを閉じる
- :ter[minal] - ターミナルウインドウを開く
- K - カーソル下の単語の man ページを開く
カーソル移動
- h - 左に移動
- j - 下に移動
- k - 上に移動
- l - 右に移動
- gj - 表示行で1行下に移動
- gk - 表示行で1行上に移動
- H - 画面上部に移動
- M - 画面中央に移動
- L - 画面下部に移動
- w - 次の単語の先頭に移動
- W - 次の(区切り文字を含む)単語の先頭に移動
- e - 次の単語の末尾に移動
- E - 次の(区切り文字を含む)単語の末尾に移動
- b - 前の単語の先頭に移動
- B - 前の(区切り文字を含む)単語の先頭に移動
- ge - 前の単語の末尾に移動
- gE - 前の(区切り文字を含む)単語の末尾に移動
-
% - 対応するカッコに移動(標準でサポートしている組み合わせは: '()', '{}', '[]' - 詳細は
:h matchpairs
を参照) - 0 - 行頭に移動
- ^ - その行で最初の非空白文字に移動
- $ - 行末に移動
- g_ - その行で最後の非空白文字に移動
- gg - ドキュメントの先頭行に移動
- G - ドキュメントの末尾行に移動
- 5gg or 5G - 5行目に移動
- gd - カーソル位置の語の定義を関数内で探して移動
- gD - カーソル位置の語の定義をファイル全体で探して移動
- fx - 次にある文字「x」の手前に移動
- tx - 次にある文字「x」の 1 つ手前に移動
- Fx - 前にある文字「x」の手前に移動
- Tx - 前にある文字「x」の 1 つ後ろに移動
- ; - 直前の f, t, F, T を繰り返し
- , - 直前の f, t, F, T を反対にして繰り返し
- } - 次の段落に移動(コード編集中の場合は関数/ブロック)
- { - 前の段落に移動(コード編集中の場合は関数/ブロック)
- zz - カーソル位置を画面中央に
- zt - position cursor on top of the screen
- zb - position cursor on bottom of the screen
- Ctrl + e - 画面を下に 1 行スクロール(カーソル移動なし)
- Ctrl + y - 画面を上に 1 行スクロール(カーソル移動なし)
- Ctrl + b - 画面全体分だけ上に移動
- Ctrl + f - 画面全体分だけ下に移動
- Ctrl + d - 画面半分だけ下に移動
- Ctrl + u - 画面半分だけ上に移動
挿入モード - テキストを挿入/追加
- i - カーソル位置で挿入モード
- I - その行頭で挿入モード
- a - カーソルの次の位置で挿入モード
- A - その行末で挿入モード
- o - 下に改行してそこで挿入モード
- O - 上に改行してそこで挿入モード
- ea - その単語の末尾で挿入モード
- Ctrl + h - 挿入モード中に手前の文字を消去
- Ctrl + w - 挿入モード中に手前の単語を消去
- Ctrl + j - 挿入モード中に改行
- Ctrl + t - 挿入モード中にその行を(右に)字下げ
- Ctrl + d - 挿入モード中にその行を(左に)字上げ
- Ctrl + n - 挿入モード中にカーソルの手前側へ次の候補を挿入(自動補完)
- Ctrl + p - 挿入モード中にカーソルの後ろ側へ前の候補を挿入(自動補完)
- Ctrl + rx - レジスタxの内容を挿入
- Ctrl + ox - 挿入モードからノーマルモードに一時的に移動してコマンドxを実行
- Esc or Ctrl + c - 挿入モードを終了
編集
- r - 文字を 1 つだけ置き換え
- R - ESCが押されるまで1つ以上の文字を置き換え
- J - スペースを 1 つ加えて下の行を現在の行に連結
- gJ - スペースなしで現在の行に下の行を連結
- gwip - 段落をすべて連結
- g~ - モーション範囲の大文字小文字を切り替え
- gu - モーション範囲を小文字に
- gU - モーション範囲を大文字に
- cc - 現在の行を消去して挿入モード
- c$ or C - カーソル位置から行末までを消去して挿入モード
- ciw - 単語を全て消去して挿入モード
- cw or ce - 単語をカーソル位置から末尾まで消去して挿入モード
- s - カーソル位置の文字を消去して挿入モード
- S - 現在の行を消去して挿入モード(ccと同じ)
- xp - 二文字の入れ替え(カットしてペースト)
- u - 取り消し(アンドゥ)
- U - 最後に変更した行を取り消し(アンドゥ)
- Ctrl + r - やり直し(リドゥ)
- . - 最後に使ったコマンドを繰り返し
テキスト選択(ビジュアルモード)
- v - ビジュアルモード開始。これで選択してからコマンド(Y - ヤンクなど)を実行
- V - 行単位のビジュアルモード
- o - 選択範囲の反対側に移動
- Ctrl + v - 矩形ビジュアル
- O - 矩形の反対側の角に移動
- aw - 単語を選択
- ab - () のブロックを選択
- aB - {} のブロックを選択
- at - <> タグのブロックを選択
- ib - () ブロックの括弧を除いた内側を選択
- iB - {} ブロックの括弧を除いた内側を選択
- it - <> タグのブロックの括弧を除いた内側を選択
- Esc or Ctrl + c - ビジュアルモード終了
ビジュアルモードでのコマンド
- > - 選択範囲を右に
- < - 選択範囲を左に
- y - 選択範囲をヤンク(コピー)
- d - 選択範囲を消去
- ~ - 大文字と小文字を入れ替え
- u - 選択範囲を小文字に
- U - 選択範囲を大文字に
レジスタ
- :reg[isters] - レジスタの内容を表示
- "xy - レジスタ x へヤンク
- "xp - レジスタ x からペースト
- "+y - システムクリップボードレジスタへヤンク
- "+p - システムクリップボードレジスタからペースト
0 - 最後のヤンク
" - 無名レジスタ, 最後の削除またはヤンク
% - 現在のファイル名
# - 別のファイル名
* - クリップボードの内容(X11 プライマリ)
+ - クリップボードの内容 (X11 クリップボード)
/ - 最後の検索のパターン
: - 最後のコマンドライン
. - 最後に挿入したテキスト
- - 最後の小さな(一行未満の)消去
= - 数式レジスタ
_ - 空白の消去用レジスタ
マークと位置
- :marks - マークリスト
- ma - 現在の位置をマーク「a」に設定
- `a - マーク「a」に移動
- y`a - マーク「a」の位置をヤンク
- `0 - Vim が以前終了したときの位置に移動
- `" - このファイルを最後に編集した位置に移動
- `. - このファイルの最後の変更に移動
- `` - 最後にジャンプした位置の手前に移動
- :ju[mps] - ジャンプのリスト
- Ctrl + i - ジャンプリスト内の新しい方の位置に移動
- Ctrl + o - ジャンプリスト内の古い方の位置に移動
- :changes - 変更リスト
- g, - 変更リスト内の新しい方の位置に移動
- g; - 変更リスト内の古い方の位置に移動
- Ctrl + ] - カーソル下の単語のタグへ移動
マクロ
- qa - マクロ「a」を記録開始
- q - マクロの記録を停止
- @a - マクロ「a」を実行
- @@ - 最後に実行したマクロを再実行
カットとペースト
- yy - 行をヤンク(コピー)
- 2yy - 2 行をヤンク(コピー)
- yw - 次の単語の始まりまでをヤンク(コピー)
- yiw - その単語全体をヤンク(コピー)
- yaw - その単語全体と前後のスペースをヤンク(コピー)
- y$ or Y - 行末までヤンク
- p - カーソル位置の 1 つ後ろにペースト
- P - カーソル位置の手前にペースト
- gp - カーソルの位置の後にペーストしてカーソル位置を新たなテキストの後に
- gP - カーソルの位置の前にペーストしてカーソル位置を新たなテキストの後に
- dd - 行を消去(カット)
- 2dd - 2 行を消去(カット)
- dw - 次の単語の始まりまでを消去(カット)
- diw - その単語全体を消去(カット)
- daw - その単語全体と前後のスペースを消去(カット)
- :3,5d - delete lines starting from 3 to 5
e.g.
:.,$d - From the current line to the end of the file
:.,1d - From the current line to the beginning of the file
:10,1d - From the 10th line to the beginning of the file
- :g/{pattern}/d - delete all lines containing pattern
- :g!/{pattern}/d - delete all lines not containing pattern
- d$ or D - 行末まで消去(カット)(<kbd>D</kbd>と同じ)
- x - 文字を 1 つ消去(カット)
テキストインデント
- >> - その行を(右に)字下げ
- << - その行を(左に)字上げ
- >% - () や {} のブロックを字下げ(カーソルが括弧にあるとき)
- <% - de-indent a block with () or {} (cursor on brace)
- >ib - () のブロックの内側を字下げ
- >at - <> タグのブロックを字下げ
- 3== - 3 行を再インデント
- =% - () や {} のブロックを再字下げ(カーソルが括弧にあるとき)
- =iB - {} のブロックの内側を再字下げ
- gg=G - バッファ全体を再字下げ
- ]p - ペーストして現在の行にインデントを揃える
終了
- :w - 終了せずにファイルに書き込み(保存)
- :w !sudo tee % - sudo を使って現在のファイルに書き込み
- :wq or :x or ZZ - 書き込み(保存)して終了
- :q - 終了(未保存の変更があると失敗する)
- :q! or ZQ - 未保存の変更を破棄して終了
- :wqa - 全てのタブを書き込み(保存)して終了
検索と置換
- /pattern - pattern のパターンを検索
- ?pattern - ?pattern のパターンを逆方向に検索
- \vpattern - 'very magic' パターン: 非英数字を特別な正規表現文字として扱う(エスケープ不要)
- n - 順方向に再検索
- N - 逆方向に再検索
- :%s/old/new/g - すべての old を new に置換
- :%s/old/new/gc - すべての old を new に確認しながら置換
- :noh[lsearch] - 検索結果のハイライトを無効化
複数ファイルを検索
- :vim[grep] /pattern/ {`{file}`} - 複数ファイルで pattern を検索
- :cn[ext] - 次の一致箇所に移動
- :cp[revious] - 前の一致箇所に移動
- :cope[n] - 一致箇所一覧のウインドウを開く
- :ccl[ose] - クイック修正ウインドウを閉じる
タブ
- :tabnew or :tabnew {page.words.file} - ファイルを新しいタブで開く
- Ctrl + wT - 分割ウィンドウをそのタブに移動
- gt or :tabn[ext] - 次のタブに移動
- gT or :tabp[revious] - 前のタブに移動
- #gt - # 番目のタブに移動
- :tabm[ove] # - 現在のタブを # 番目に移動(0 始まり)
- :tabc[lose] - 現在のタブを閉じる
- :tabo[nly] - 現在以外のタブを閉じる
-
:tabdo command - 全てのタブで
command
を実行(例::tabdo q
- は全てのタブを閉じる)
複数のファイルでの作業
- :e[dit] file - 新しいバッファでファイルを編集
- :bn[ext] - 次のバッファに移動
- :bp[revious] - 前のバッファに移動
- :bd[elete] - バッファを消去(ファイルを閉じる)
- :b[uffer]# - # 番目のバッファに移動
- :b[uffer] file - file という名前のバッファに移動
- :ls or :buffers - バッファのリストを開く
- :sp[lit] file - 新しいバッファの水平分割ウィンドウでファイルを開く
- :vs[plit] file - 新しいバッファの垂直分割ウィンドウでファイルを開く
- :vert[ical] ba[ll] - 全てのバッファを垂直分割ウインドウにして編集
- :tab ba[ll] - 全てのバッファをタブにして編集
- Ctrl + ws - ウィンドウ分割
- Ctrl + wv - ウィンドウ垂直分割
- Ctrl + ww - ウィンドウ切り替え
- Ctrl + wq - ウィンドウ終了
- Ctrl + wx - 現在のウインドウを次のウインドウと入れ替え
- Ctrl + w= - 全てのウインドウを同じ高さと幅に
- Ctrl + wh - 右のウィンドウ(垂直分割)にカーソル移動
- Ctrl + wl - 左のウィンドウ(垂直分割)にカーソル移動
- Ctrl + wj - 下のウィンドウ(水平分割)にカーソル移動
- Ctrl + wk - 上のウィンドウ(水平分割)にカーソル移動
- Ctrl + wH - 現在のウィンドウの高さを最大化して最も左側に移動
- Ctrl + wL - 現在のウィンドウの高さを最大化して最も右側に移動
- Ctrl + wJ - 現在のウィンドウの幅を最大化して最も下側に移動
- Ctrl + wK - 現在のウィンドウの幅を最大化して最も上側に移動
差分
- zf - モーション範囲での折りたたみを手動定義
- zd - カーソル下の折りたたみを消去
- za - カーソル下の折りたたみを切り替え
- zo - カーソル下の折りたたみを開く
- zc - カーソル下の折りたたみを閉じる
- zr - 全ての折りたたみを 1 段階減らす(開く)
- zm - 全ての折りたたみを 1 段階折りたたむ(閉じる)
- zi - 全ての折りたたみを切り替え
- ]c - 次の変更点の始端に移動
- [c - 前の変更点の始端に移動
- do or :diffg[et] - (他のバッファから)差分を取得する
- dp or :diffpu[t] - (他のバッファへ)差分を送り込む
- :diffthis - 現在のウインドウを差分モードのひとつに
- :dif[fupdate] - 差分情報を更新
- :diffo[ff] - 現在のウインドウの差分モードを無効化