モード
i:挿入モードへ移行
a:カーソル直後で挿入モードへ移行
I:行頭で挿入モードへ移行
A:行末で挿入モードへ移行
o:新しい行を追加し挿入モードへ移行
O:上に新しい行を追加し挿入モードへ移行
ESC:挿入モードからノーマルモードへ移行

カーソル移動
h:カーソルを左へ移動
j:カーソルを下へ移動
k:カーソルを上へ移動
l:カーソルを右へ移動
^:行頭へカーソルを移動
$:行末へカーソルを移動
shift+上:ページアップ
shift+下:ページダウン
gg:先頭行へ移動
G:最終行へ移動

編集
J:下の行と連結
dd:行を切り取り
3dd:3行を切り取り
D:行頭から行末までの文字を切り取り
yy:行をコピー
Y:行をコピー
p:コピーまたは切り取りした行を下に追加
gU+右:小文字を大文字に変更
gu+G:最終行まですべて大文字を小文字に変更
u:アンドゥ(戻る)
Ctrl+r:リドゥ(進める)
.:ひとつ前の動作を繰り返す


置換
:s/hoge/huga/:行内のhogeをhugaに置換
:s/hoge/huga/g:行内のhogeをhugaに置換

領域選択
v:領域選択
V:行選択
Ctrl+v:矩形選択
ggVG:すべて選択

タブ操作
:tabnew hoge:新しいタブをhogeで作成
:tabedit hoge:タブを開きhogeを編集
gt:右のタブへ移動
gT:左のタブへ移動
:tabclose:タブを閉じる
:tabonly:他のタブをすべて閉じる

ウィンドウ操作
:new hoge:新しいwindowをhogeで作成(上下)
:new hoge:新しいwindowをhogeで作成(左右)
:edit hoge:現在のwindowでhogeを編集
close:windowを閉じる
hide:windowを閉じる(バッファは残す)
Ctrl+w+上/下/左/右:上下左右のwindowへ移動
Ctrl+w+r:windowの入れ替え

ファイル操作
:w hoge:hogeで保存
:wq:上書き保存して閉じる
:q!:保存せずに強制終了

バッファ操作
:ls:バッファ一覧の表示
b 数字:該当のバッファを開く
bd 数字:該当のバッファを閉じる

レジスタ操作
:register:レジスタ一覧の表示
"ay:選択範囲をレジスタaに格納
"byy:行をレジスタbに格納
"bp:レジスタbを貼り付け
qc:操作履歴をレジスタcに格納(開始)
q:操作履歴をレジスタcに格納(終了)
@c:レジスタcの操作履歴を再生
md :カーソル位置をレジスタdに格納
'd:レジスタdのカーソル位置へ移動

その他
shift+.:選択範囲を右へインデント
Ctrl+a:選択範囲をインクリメント
Ctrl+x:選択範囲をデクリメント
%:(の上で行うと対応する)へ移動



array_mode = ["[モード]"] array_cursor = ["[カーソル移動]"] array_edit = ["[編集]"] array_search = ["[検索]"] array_replace = ["[置換]"] array_area = ["[領域選択]"] array_tab = ["[タブ操作]"] array_window = ["[ウィンドウ操作]"] array_file = ["[ファイル操作]"] array_buffer = ["[バッファ操作]"] array_register = ["[レジスタ操作]"] array_others = ["[その他操作]"] def select_mode(word): if word in array_mode: array_mode.remove(word) else: array_mode.append(word) def select_cursor(word): if word in array_cursor: array_cursor.remove(word) else: array_cursor.append(word) def select_edit(word): if word in array_edit: array_edit.remove(word) else: array_edit.append(word) def select_search(word): if word in array_search: array_search.remove(word) else: array_search.append(word) def select_replace(word): if word in array_replace: array_replace.remove(word) else: array_replace.append(word) def select_area(word): if word in array_area: array_area.remove(word) else: array_area.append(word) def select_tab(word): if word in array_tab: array_tab.remove(word) else: array_tab.append(word) def select_window(word): if word in array_window: array_window.remove(word) else: array_window.append(word) def select_file(word): if word in array_file: array_file.remove(word) else: array_file.append(word) def select_buffer(word): if word in array_buffer: array_buffer.remove(word) else: array_buffer.append(word) def select_register(word): if word in array_register: array_register.remove(word) else: array_register.append(word) def select_others(word): if word in array_others: array_others.remove(word) else: array_others.append(word) def display_all(): array_all = [array_mode,array_cursor,array_edit,array_search,array_replace,array_area,array_tab,array_window, array_file,array_buffer,array_register,array_others] display("Vimチートシート",target="title") display(" ",target="result") for k in array_all: if len(k) > 1: for j in k: display(j,target="result") display(" ",target="result")