Linuxで利用するエディター(vim編)5

  Linux基礎

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 statuslsを確認したいとき、Vimから離れず実行。

17. タブの操作(ファイルグループ分け)

:tabnew index.html

事例: Web開発で HTML / CSS / JS を別タブに開き、画面を分けて編集。

18. モーションとテキストオブジェクト

di"

事例: 「”Hello”」という文字列の中身だけを削除して別の文字に差し替える。

19. 複雑な編集を簡単に(Surroundプラグイン)

ysiw'

事例: 特定の単語を一瞬でクォート囲みにする。メールアドレスや定数処理に便利。

20. 位置マークを使ったコピー&ジャンプ

ma
移動して...
y'a

事例: 大きなコードブロックの始点をmaでマークし、数十行後まで移動した後y'aで始点から現在まで一気にコピー。

まとめ

本記事で紹介したテクニックと事例を活用すれば、Vimでの編集スピードと柔軟性は大きく向上します。「手を止めず、頭を止めず」を目指すなら、これらの習得は大きな武器となります。必要なものから少しずつ試して、自分の作業スタイルに合わせたVim環境を作り上げていきましょう。

LEAVE A COMMENT