Heavy Watal

vi

基礎知識

オリジナルがvi、改良版がvim (Vi IMproved)。 ただし、shの正体がbashであるように、LinuxやMacに入ってるviの正体はvim。 vimのデフォルトは拡張を無効にしたvi互換モード。 つまり設定をいじらなければ起動コマンドはviでもvimでも同じ?

文字入力はインサートモード、それ以外はすべてノーマルモードで行う。 起動時はノーマルモード。

ノーマルモード

とりあえず覚えてないと死ぬやつ

key action
hjkl ←↓↑→
i インサートモードに移行
:w 保存
:q 終了
:q! 保存しないで強制終了
u 元に戻す
x 1文字削除 (行は消せない)
dd 行カット
ctrl-c 中断 (Emacs ctrl-g)

移動

key action
b 単語頭
e 単語末
w 単語末の空白
0 行頭
^ 行頭 (非空白)
$ 行末
H 画面先頭
L 画面末尾
gg ファイル先頭
G ファイル末尾
ctrl-b 前ページ
ctrl-u 半ページ上
ctrl-d 半ページ下
ctrl-f 次ページ

数字と組み合わせられる。 e.g., 3jで3行下

shift-b, shift-e, shift-w はドットなどの区切り文字をすっ飛ばして大きめ移動。

カーソルの移動だけでなく、コピーなどの動作対象の指定にも使う。

コピペ

key action
d カット
y コピー
shift-p ペースト

カットとコピーは対象を指定する必要がある。

d3l  # 右に3文字カット; 3dl でもいい
yy   # 1行まるまるコピー

ただのpでもペーストだが、カーソルの右に入るのが気持ち悪い。

範囲選択を見ながら操作したい場合は下記のヴィジュアルモードを使う。

インサートモード -- INSERT --

キー入力しかしない。 カーソルキーで移動はできるが、基本的にはしないつもりで。

ノーマルモードへの戻り方
esc: 標準だが遠すぎるので却下。
ctrl-[: それなりに押しやすく、escと同じ挙動。
ctrl-c: 最も押しやすいし覚えやすい。 インサートモードでのあらゆる動作を中断して戻るので注意。

ヴィジュアルモード -- VISUAL --

v で始まる範囲選択モード。 Emacsでいうctrl-space

shift-v で行単位選択。 ctrl-v で矩形選択。