Skip to main content

vim メモ基本

カーソル移動系

txt
                    gg  ( :0 )


k

0 << b < h < . > l > w >> $

j


G
キー動作
Ctrl + B,FPageUp, PageDown
Ctrl + E,Yカーソル位置を変えずにスクロール Up, Down
Ctrl + ],tタグジャンプ, 戻る
Ctrl + i,o戻る, 進む
gfカーソル位置のファイル名の先に飛ぶ

削除系

txt
dd : 行削除
x : 1 文字削除
p : 貼り付け

組み合わせて

  • ddp で 行を 1 つ下に
  • xp で 文字を 1 つ右に

Visual モード

txt
Shift + V : 行選択
Ctrl + V : 矩形選択

組み合わせてよく使う作業

  • 行選択後
    • d : 削除
    • > : インデント
  • 矩形選択後
    • I// : 選択範囲の先頭に文字を入れる
    • $a, : 選択範囲の行末に文字を入れる (選択範囲の右端でないところがミソ)

表示系

txt
:set nu     : 行番号を出す
:set nowrap : 折り返さない
:set ts=4 : タブ幅4にする
:set ft=sql : ファイルタイプを指定(自動判別されないときに)

検索系

ファイル内検索

txt
/<検索文字列><Enter>  : ファイル内検索
* : カーソル位置の単語で検索
n, N : 次へ, 前へ

grep 的な検索

:vim <検索文字列> */*/*.cpp | cw    : 検索して一覧を下ウィンドウに出す
:vim <C-r><C-w> */*/*.cpp | cw : カーソル位置の単語で検索
  • :vim:vimgrep の略

キーボードマクロ的なもの

.                   : 直前の操作の繰り返し

qa<なにかの操作>q : a という名前でマクロが記録される
@a : a という名前のマクロを実行
@@ : 直前に実行したマクロを実行

ここでいう「直前の操作」は、「範囲指定+操作」の組み合わせのことで「検索」は含まれない。

ので、1コマンドで完結するように組み合わせを工夫すると、便利に行ける。

doSomethingBad() 関数を doSomethingGood() 関数に変更したいとする。

まず、/doSomething\zsBad で検索後、

  1. cwGood で編集
  2. n + . で、次々と同じ操作の繰り返し

とか

  1. cgnGood で編集
  2. . で、次々と同じ操作の繰り返し