プログラマのスキルと、エディタのスキルは比例します(要出典)。
いきなりは覚えられないので、一日 2, 3 個、hjkl を減らす新しいコマンドを覚えましょう。
保存を忘れて作業が消えた、ということがないように自動保存。こまめに git していれば戻すのも問題なし。
set autowrite
autocmd CursorHold * wall
autocmd CursorHoldI * wall
インクリメンタル検索をしましょう。
/ ... n で次、N で前
# ... カーソル位置にある単語を検索
:vimgrep /^sub/ *|cw ... 現在開いているファイルの関数一覧
:vimgrep /検索文字/ **|cw ... 全ファイル検索
:%s/foo/bar/gc ... ファイル全体の置換&確認
:%s;/usr/local;/usr;gc ... / の代わりに ; を使う。パスの置換に便利
文字を途中まで入力したら C-p で、残りを補完することができます。
補完することで typo が減り、ケアレスミスなバグが減ります。
C-p ... 前の候補へ
C-n ... 次の候補へ
Shougo/neocomplete.vim はもっと高度な補完を提供します。
vim だけでなく screen で分割してログを見ると便利。
:sp ... 横分割
:vs ... 縦分割
C-w の後に hjkl ... その方向にウィンドウ移動
C-w w ... 次のウィンドウへ
C-w p ... 前のウィンドウへ
C-w o ... 現在のウィンドウ以外すべて閉じる
C-w q ... 現在のウィンドウを閉じる
プログラの書かれた画面で C-r すると実行できます。 実行のためにシェルに戻って perl foo.pl 不要になります。 サンプル・プログラムを書いて動かすときに便利。
「:e **/ファイル名」して深い場所にあるファイルを開くことができますが、ctrlp は候補を見ながら絞り込めるので便利です。
使い方は C-p するだけ。
ctrlp.vimの使い方まとめ - Qiita [キータ]
"hello, world" や <h1>hello, wolrd</h1> の hello, wolrd を削除したいことはよくある。
di の次に t ( タグ ) や ' を入力することで hello, wolrd を消すことができます。
dit <h1>hello, world</h1> -> <h1></h1>
di" "hello, world" -> ""
di' 'hello, world' -> ''
dib (hello, world) -> ()
diB {hello, world} -> {}
di を da にすると外側の括弧も消えます。
tpope/vim-surround はもっといろいろな操作ができます。
リーダブルコードの観点から => や = でコードを並べることは大切。
$apple => "123"
$book => "4";
$cat => "5";
$dragon => "6789";
V で選択し、:Align して => をすると、=> で綺麗に整形されます。
$apple => "123"
$book => "4";
$cat => "5";
$dragon => "6789";
ソースコードの該当箇所にジャンプ。
$ cd /usr/ports/devel/ctags
$ sudo make install
ソースのあるフォルダに移動。
$ exctags -R
メソッドや関数で C-] でジャンプし、C-t で戻る。
perl で書かれた Bugzilla で試す。
$ wget http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-4.4.1.tar.gz
$ tar xfz bugzilla-4.4.1.tar.gz
$ cd bugzilla-4.4.1
$ exctags -R
diff より vimdiff が見やすいです。
$ vimdiff oldfile newfile
vimdiff はコードの取り込みができます。
]c ... 次の差分へ
[c ... 前の差分へ
do ... 現在のバッファに、他のバッファからコピー
dp ... 現在のバッファから、他のバッファにコピー
- NeoBundle を使ってプラグインをインストール
- Vimテクニックバイブル ... 必読
- Vimに関する投稿 - Qiita [キータ] ... ストックの多い時期を読みまくる