脳汁portal

アメリカ在住(だった)新米エンジニアがその日学んだIT知識を書き綴るブログ

vi/vimのtips 35選

よく使う & 便利なvi/vimの機能をtipsとして残します。
ちょこちょこ追加とか削除とかするかもしれません。
f:id:portaltan:20150731102723p:plain

移動系

行数を指定して移動

指定した行数へ飛びます

:行数
単語単位で移動
w # 単語単位で右へ移動
b # 単語単位で左へ移動
行頭・行末へ移動
0 # 行頭へ移動
$ # 行末へ移動
直前の編集点へ移動

uとは違い取り消しせずに直前の編集点へ戻ります

g;

コピー・カット(削除)・ペースト系

文字削除

文字を削除します

x     # 1文字削除
数字x # 指定した数字分削除します
単語削除

カーソルののっている単語を削除します

diw # 削除のみ
ciw # 削除後、挿入モードへ移行
文字列削除

カーソルのある行の文字列(""で囲まれたエリア)を削除します

di"
行削除

行を削除します(カットされるのでペーストすることが可能です)

dd      ## 1行削除
数字dd  ## 指定した行数削除
pasteモード

ペースト時にコメントアウトの行以降全部コメントアウトされてしまうデフォルトの挙動をoffにする

:set paste
ペースト(貼り付け)

コピー・カットした項目を貼り付けます

p
過去にコピー・カットした内容のペースト

直前のコピーでなくても一定数コピー内容は保存されており、ペーストに利用できます

:reg # 保存されている内容の確認
指定されたマークp # 保存されている内容のぺースト
通常モードでのペースト

挿入モードにならずにペーストします

Ctrl + r

単語検索・置換・補完系

単語検索

カーソルが乗っている単語で検索をします

Shift + # # カーソルがのっている単語で検索
n         # 検索状態で上方移動
Shift + n # 検索状態で下方移動
置換

文字列を置換します。

:%s/置換前文字列/置換後文字列/gc
単語補完

入力途中の単語を補完します

Ctrl + n

直前の作業取り消し系

直前の作業の取り消し

直前に行った作業を取り消します

u
直前に行った作業の取り消しの取り消し

uコマンドで取り消した内容を元に戻します(取り消しをなかったことにします)

Ctrl + r

VISUAL MODE

複数行全削除
Shift + v # VISUAL LINEモードへ移行
dd        # 削除(カット)
複数行挿入
Shift + v # VISUAL LINEモードへ移行
Shift + i # 挿入モードへ移行
(文字入力等)
Eacape    # 入力した文字が全行に反映される
複数行指定削除

複数行の指定したエリアだけ削除します(行頭のコメントアウトだけなど)

Ctrl + v # VISUAL BLOCKモードへ移行
dd       # 指定したエリア削除

その他

行数表示・非表示

行数を表示(非表示)させます

:set nu    # 行数表示
:set nonu  # 行数非表示
数字のインクリメント・デクリメント

カーソルののった数字の増減を行います

Ctrl + a # インクリメント
Ctrl + x # デクリメント
カーソルを動かさずに挿入モードへの移行

aで挿入モードへ移行するとカーソルが一つ右へ動きますが、iだと左に動くので、現在の文字の前から編集できます

i
シェルコマンドの実行

シェルコマンドを実行して、その実行結果をペーストすることができます

:!コマンド   # シェルコマンドを実行します
:.!コマンド  # シェルコマンドの結果を貼り付けます

# example
:!ls
:.!ls

#emacsなんていらんかったんや!!