<Vim, Cheatsheet> Vim かんぺ。

ちと忘れがちのものまとめておこう。

移動 motion

gm          "表示されている画面の真ん中にジャンプ
25%         "ファイル全体の25%位置にある行に移動。

http://vim-jp.org/vimdoc-ja/motion.html

ジャンプ jump-motion

CTRL+O      "ジャンプしてきた元の古いカーソル位置に戻る(移動)。
CTRL+I      "CTRL+Oの逆に移動。
:ju[mps]    "ジャンプリスト表示

http://vim-jp.org/vimdoc-ja/motion.html#jump-motions

g;          "最後の変更箇所へ移動
g,          "g;の逆の移動。

http://vim-jp.org/vimdoc-ja/motion.html#change-list-jumps

囲む surround

ds'         " d(elete)s(urrounding)'
di'         " d(elete)i(nside of)'

cs'"        " c(hange)s(urrounding)'(with)"
ci'         " c(hange)i(nside of)'

S'          " S(urrounded by visual mode with)'
vawS'       " v(isual)aw(ord)S(urround)(with)'

yss'        " y(ank)s(urround)s(entence with)'
ysiw'       " y(ank)s(urround)i(nner)w(ord with)'

http://vim-jp.org/vimdoc-ja/motion.html#object-select

https://github.com/tpope/vim-surround

大文字小文字変換 swap upper/lower letter

vwU  "ヴィジュアルモード(v)でワード単位(w)選択し、大文字変換(U)
vwu "ヴィジュアルモード(v)でワード単位(w)選択し、小文字変換(u)
~ "大文字 <-> 小文字

ファイルを挿入する insert

:r ファイル    "指定したファイルの内容を現在のファイルに流しこみ
:r !コマンド  "コマンド実行結果を現在のファイルに流しこみ

https://vim-jp.org/vimdoc-ja/insert.html#inserting-file

コマンドラインウィンドウ command line window

q:
ENTER "カーソル行のコマンドを再度、実行
CTRL + c "カーソル行のコマンドを、コマンドラインにコピー

https://vim-jp.org/vimdoc-ja/cmdline.html#cmdline-window

https://vim-jp.org/vimdoc-ja/usr_20.html#20.5

http://nanasi.jp/articles/howto/editing/use-command-history.html

レジスタ register

:reg
"0p "レジスタ0をペースト

バッファーbuffer

:ls "バッファー一覧を表示
:b 1 "バッファー1を開く

ビジュアルモード Visual mode

CTRL + V (Visual Block) + $ + A (Append)    "不揃いの複数の行末に何かを追加する方法。

http://vim-jp.org/vimdoc-ja/visual.html

繰り返しコマンド実行 repeating command

:global 条件を指定その条件にマッチするときだけ処理を実行する。

:g/{pattern}/{cmd}              "{pattern}にマッチする{cmd}を実行する。
:g/^/cmd                        "すべての行に対して{cmd}を実行する。
:g/^/ if {expr}|{cmd}           "{expr}の条件に合う行に対して{cmd}を実行する。
:g/{pattern}/if {expr}|cmd      "{pattern}と{expr}の条件に合う行に対して{cmd}を実行する。

vglobal 条件を指定その条件にマッチしないときだけ処理を実行する。

:v/{pattern}/{cmd}              "{pattern}にマッチしない{cmd}を実行する。
:v/^/if {expr}|{cmd}            "{expr}の条件に合わない行に対して{cmd}を実行する。
:v/{pattern}/if {expr}|{cmd}    "{pattern}と{expr}の条件に合う行に対して{cmd}を実行する。
:g/hage/norm gJ                              " g("hage"にマッチした行でコマンド実行) > gJ(空白無で2行にわたる行を連結) 
:g/hage/m 0                                  " g("hage"にマッチした行でコマンド実行) > 行を逆順に並べ替える
:%g/^[0-9]/d                                 " 先頭が数字の行を削除。 %(全体選択) > g(パターンにマッチした行でコマンド実行) > d(削除)
:%s/\s\+$//                                  " 行末の空白を取り除く。 %(全体選択) > s(置換) > \s(空白メタ) > +(複数回マッチ) > $(行末マッチ)
:v/\S/d                                      " 空白行を消す。 v(パターンにマッチしない行でコマンド実行) > \S(空白以外メタ) > d(削除)
:g/^$/d                                       " 空白行を消す。 g(パターンにマッチ行したでコマンド実行) > ^$(空行) > d(削除)
:%norm jdd                           " 1行置きに削除
:g/^/+d                                 "偶数行を削除
:1d|g/^/+d         "奇数行を削除
:g/^/ if line('.') % 2 == 0 | s/aaa/bbb/g     " 偶数行だけ置換する

http://vim-jp.org/vimdoc-ja/various.html#:normal-range

http://vim-jp.org/vimdoc-ja/repeat.html#repeating

http://vim-jp.org/vimdoc-ja/usr_12.html

EXコマンド
http://vim-jp.org/vimdoc-ja/vimindex.html#ex-cmd-index

文字クラス(メタ文字)
http://vim-jp.org/vimdoc-ja/pattern.html#/character-classes

正規表現 regexp pattern

http://vim-jp.org/vimdoc-ja/pattern.html#pattern-overview

ユナイト Unite

:Ur "レジスタ一覧表示
:Ub "バッファー一覧表示
:Uf "ファイル一覧表示