Vim上級テクニック集:実践で活きる20の技法(事例付き)
Vimをより深く使いこなしたい方に向けて、20個のテクニックを厳選し、それぞれに具体的な事例を添えて解説します。日々の編集作業に役立つものばかりです。
1. 複数ファイル同時編集(バッファの操作)
:e main.c
:sp header.h
:vs config.h
事例: C言語プロジェクトで main.c とヘッダーファイルを並べて編集し、関数定義と宣言を見比べながら修正。
2. クイックフィックスでエラー管理
:vimgrep /FIXME/ **/*.py
:copen
事例: Pythonコード全体に埋まっている「FIXME」コメントを一覧表示し、1つずつ確認しながら修正作業。
3. マクロで作業を自動化
qa
I// TODO
q
@a
事例: 100行のソースコードに「// TODO」を先頭に挿入。1行編集したらマクロにして@aで残りに一気に適用。
4. 検索結果を一括変換(正規表現活用)
:%s/var_name/value/g
事例: 仕様変更で全ての「var_name」を「value」に変更。1行ずつ編集せず、数百行を一発置換。
5. 閉じタグ補完(matchitプラグイン)
:packadd! matchit
%
事例: HTMLコードで <div>〜</div>
を一発でジャンプし、どこで閉じているかを即確認。
6. Vim内でファイル検索(fzf.vim)
:Files
事例: 数百以上あるソースファイルの中から「data_handler.py」を名前の一部で素早く検索して開く。
7. ファイルタイプごとの設定
autocmd FileType markdown set textwidth=80 spell
事例: Markdown編集時に自動で80文字で改行し、スペルチェックが有効になるように設定。
8. 編集の取り消しとやり直し
u
Ctrl+r
事例: 数行削除してしまったが、u
で即取り消し、必要な変更だけ再適用。
9. 変更箇所の確認(undo tree)
:UndotreeToggle
事例: どのタイミングでバグが入ったかを視覚的に確認し、該当の変更前まで戻る。
10. grepと連携した検索
:grep -R "initDatabase" .
事例: DB初期化処理「initDatabase」をプロジェクト全体から探し、関連ファイルにジャンプ。
11. インデント操作
gg=G
事例: ソースコードを全体選択せずとも、gg=G
だけで全行のインデントを整形。
12. 複数行の同時編集(ビジュアルブロック)
Ctrl+v → jjj → I → // → Esc
事例: 複数行の先頭に一括でコメントアウト「//」を追加。高速にコメント管理。
13. ファイル保存時に自動処理
autocmd BufWritePre *.js :%s/\s\+$//e
事例: JavaScript保存時に、行末にある不要な空白を自動的に削除。
14. タグジャンプ(ctags)
ctags -R .
vim utils.c
Ctrl+]
事例: 関数呼び出し元から定義元に即ジャンプして中身を確認、Ctrl+o
で元に戻る。
15. カスタムキーマッピング
nnoremap w :w
事例: 通常モードで「\w」キーを押すだけで即保存できるように設定。
16. Vim内でシェルを使う
:term
事例: 編集中のディレクトリでgit status
やls
を確認したいとき、Vimから離れず実行。
17. タブの操作(ファイルグループ分け)
:tabnew index.html
事例: Web開発で HTML / CSS / JS を別タブに開き、画面を分けて編集。
18. モーションとテキストオブジェクト
di"
事例: 「”Hello”」という文字列の中身だけを削除して別の文字に差し替える。
19. 複雑な編集を簡単に(Surroundプラグイン)
ysiw'
事例: 特定の単語を一瞬でクォート囲みにする。メールアドレスや定数処理に便利。
20. 位置マークを使ったコピー&ジャンプ
ma
移動して...
y'a
事例: 大きなコードブロックの始点をma
でマークし、数十行後まで移動した後y'a
で始点から現在まで一気にコピー。
まとめ
本記事で紹介したテクニックと事例を活用すれば、Vimでの編集スピードと柔軟性は大きく向上します。「手を止めず、頭を止めず」を目指すなら、これらの習得は大きな武器となります。必要なものから少しずつ試して、自分の作業スタイルに合わせたVim環境を作り上げていきましょう。