<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

ビジュアルモード 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/^/ 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