Vimプロフェッショナルテクニック集
このページでは、Vimを実務で最大限に活用するための実践的なテクニックを網羅的に解説しています。初心者から中級者を脱した方に向けて、より高度な編集効率を実現するためのコマンド群と操作例を紹介します。
1. 一時マークを活用した複数ジャンプ
操作方法:
ma " 現在位置にマークaを設定
`a " マークaにジャンプ(行・列)
'a " マークaの行頭にジャンプ
実用例:
長い設定ファイル内で、変更対象となる複数のセクションにマークを設定し、後から素早くジャンプする際に活用します。
2. レジスタを使い分けたコピー&ペースト
操作方法:
"ayw " 'a'レジスタに1単語コピー
"ap " 'a'レジスタからペースト
実用例:
複数のデータ断片をレジスタa、b、cなどに一時保存しておき、それぞれを別の箇所にまとめて貼り付ける編集作業に便利です。
3. :globalとvglobalで条件編集
操作方法:
:g/DEBUG/d " DEBUG行を削除
:v/^[#;]/d " コメント以外を削除
実用例:
ログファイルや設定ファイル内で、特定の文字列を含む行のみ削除または保持する際に強力なコマンドです。
4. insertモードでの補完
操作方法:
<C-n> " 補完候補を前へ
<C-p> " 補完候補を後ろへ
実用例:
関数名や変数名を途中まで打ったあと、<C-n>
で補完することで、タイピングミスの削減と速度向上が見込めます。
5. :normalによるバッチ編集
操作方法:
:%normal I// " 全行の先頭に//を追加
実用例:
一時的にすべてのコード行にコメントを付与して検証を行いたいとき、数百行でも一発で処理できます。
6. マクロの記録と実行
操作方法:
qa " aレジスタに記録開始
q " 記録終了
@a " aレジスタのマクロ実行
@@ " 直前のマクロ再実行
実用例:
データ整形や特定パターンの置換など、手作業で繰り返す処理を一度マクロにしておけば、大量処理も楽になります。
7. 選択範囲に外部コマンドを適用
操作方法:
:'<,'>!sort " ビジュアル選択範囲をsort
実用例:
リストをソートしたり、uniqやgrepなどの外部コマンドで加工処理を行うときに便利な統合技です。
8. 複数ウィンドウ・バッファ操作
操作方法:
:vsplit file.txt " 垂直分割
:split file.txt " 水平分割
:bn " 次のバッファへ
:bp " 前のバッファへ
実用例:
関連ファイルを同時に比較・編集したり、参照しながら別ファイルを編集する際に使用します。
9. 置換の応用
操作方法:
:%s/\s\+$//e " 行末スペース削除
:%s/\(.*\)/"\1",/g " 各行をクォートしてカンマ付加
実用例:
CSVデータ整形やコード整備時に、正規表現で高度なテキスト処理が可能です。
10. 折りたたみ(fold)を使った整理
操作方法:
:set foldmethod=indent
zc, zo, zc " 折りたたみ開閉
実用例:
PythonやYAMLなどインデントが重要な構造を持つファイルで、構造単位で折りたたんで見やすくできます。
11. スニペットとテンプレート
操作方法:
UltiSnips + <Tab> " タグ入力後に展開
実用例:
関数テンプレートやクラス定義などを、キーワード入力→<Tab>
で即展開。高速にコードを量産できます。
12. セッションと作業再開
操作方法:
:mksession! work.vim
vim -S work.vim
実用例:
作業中のタブ、バッファ状態などを保存しておき、後日そのまま再開可能な状態にする。大規模作業に有効。
13. スマートな移動術
操作方法:
gg " ファイル先頭
G " ファイル末尾
H " ウィンドウ上端
M " ウィンドウ中央
L " ウィンドウ下端
実用例:
スクロールを最小限に抑え、編集中の関数やブロックにすばやくアクセスすることで作業効率アップ。
14. スクロール中でもカーソル追随
操作方法:
zz " カーソル行を画面中央へ
zt " カーソル行を画面上端へ
zb " カーソル行を画面下端へ
実用例:
現在編集中の行を常に見やすい位置に配置し、視線移動を最小限に抑える。
15. diffモードでファイル比較
操作方法:
vimdiff old.txt new.txt
実用例:
設定変更やコード修正の差分を確認する際に、差分が色付きで明示され、ミスを防止できます。
16. Visual Block編集
操作方法:
Ctrl+v → 選択 → I または A
実用例:
同じ桁位置にインデントやコメントなどを挿入・削除するときに最適。
17. 遅延復帰用の変更履歴活用
操作方法:
:earlier 10m
:later 10m
実用例:
保存していない状態でも編集の巻き戻しができるため、大胆な変更前に戻る準備が可能です。
18. yankとputの位置を工夫する
操作方法:
p " カーソル後に貼り付け
P " カーソル前に貼り付け
実用例:
関数定義の前後、インデント内など、貼り付け位置に応じて使い分けることで整形が崩れにくくなります。
19. 検索と履歴
操作方法:
/pattern " 前方検索
?pattern " 後方検索
n, N " 次・前の一致へ
実用例:
大規模なコードベースで特定の変数名や関数を追跡する際、履歴を活用して再検索も可能。
20. undo treeの可視化(プラグイン)
操作方法:
:UndotreeToggle
実用例:
分岐的なundo/redoの履歴を視覚的にたどることで、どの時点の修正を保持または破棄するかを選択できます。
まとめ
今回紹介した20個のVimテクニックは、いずれも実務や開発現場で即戦力となる内容です。各機能を理解し、必要に応じてマクロ化・マッピングしていくことで、Vimの操作性は飛躍的に向上します。
まずは1日1つ、使ったことのない機能を試してみてください。Vimは「慣れれば最強」の名にふさわしい存在になるでしょう。