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

Vimの真価は「自動化」と「高速移動」にあり。

Vimは、単なるテキストエディタではありません。キーボード操作だけで完結するその設計は、思考のスピードでコードを編集するために作られています。

基本操作(移動、入力、保存)に慣れてきたあなたが次に覚えるべきは、「面倒な作業をVimにやらせる技術」です。
本記事では、ウィンドウ分割、マクロ、タグジャンプなど、日々の開発業務を数倍速くする実践的なテクニックを紹介します。


ウィンドウ分割とタブページを使いこなす

Vimは「バッファ」「ウィンドウ」「タブ」という3つの概念を持っています。
これらを理解することで、複数のファイルを自由自在に扱えるようになります。

ウィンドウ分割(複数のファイルを並べて見る)

コードを見比べたり、設定ファイルを参照しながら実装する際に必須の機能です。

:split filename     " 画面を上下(横)に分割
:vsplit filename    " 画面を左右(縦)に分割
:sp                 " 現在のファイルを上下に複製表示(長いコードの上下を参照する時に便利)

" --- ウィンドウ間の移動 ---
Ctrl + w  h    " 左へ移動
Ctrl + w  l    " 右へ移動
Ctrl + w  j    " 下へ移動
Ctrl + w  k    " 上へ移動

バッファとタブページの違い

  • バッファ: メモリ上に開かれているファイルそのもの。
  • タブページ: ウィンドウのレイアウトを保存する「ワークスペース」のようなもの。
:ls           " 開いているバッファ一覧を表示
:b 2          " バッファ番号2に切り替え

:tabnew file  " 新しいタブでファイルを開く
:tabn         " 次のタブへ (tabnext)
:tabp         " 前のタブへ (tabprev)
:tabc         " 現在のタブを閉じる (tabclose)

【最強機能】マクロで単純作業を自動化する

「100行あるリストの行頭にすべて # をつけたい」「特定のパターンの行だけ修正したい」。
そんな時、手作業で繰り返していませんか? Vimの「マクロ」機能を使えば、操作を録画して再生できます。

マクロの使い方 4ステップ

  1. qa : マクロの記録開始(レジスタ a に保存)。ステータス行に「recording」と表示されます。
  2. 操作を実行 : 繰り返したい編集操作を行います(例:I#<Esc>j)。
  3. q : 記録終了。
  4. @a : マクロ a を再生。10@a と打てば10回繰り返します。

💡 コツ
マクロを記録する際は、操作の最後に「次の行の先頭へ移動する」などの次の準備動作を含めておくと、連続再生した時にスムーズに動きます。


プロジェクト内を高速移動する(Grep/Ctags)

大規模なソースコードを追う場合、ファイルを開いて閉じてを繰り返すのは非効率です。
検索とジャンプ機能を活用しましょう。

Grep連携で一括検索

Vimから出ずに、プロジェクト内の文字列を検索できます。

:vimgrep /検索ワード/ **/*.py   " カレント以下の全Pythonファイルを検索
:copen                          " Quickfixウィンドウを開いて結果一覧を表示
:cn                             " 次の検索結果へジャンプ
:cp                             " 前の検索結果へジャンプ

タグジャンプ(定義元へ移動)

ctags をインストールしてタグファイルを生成しておけば、関数や変数の定義元へ一瞬で飛べます。

# ターミナルで実行して tags ファイルを生成
$ ctags -R .

Vim上での操作:

  • Ctrl + ] : カーソル下のキーワードの定義元へジャンプ
  • Ctrl + t : ジャンプ前の場所に戻る

コード解析と表示設定(Diff/Folding)

ファイルの差分(Diff)を確認する

Gitのコンフリクト解消や、configファイルの比較に便利です。

:vsp file_old.txt   " 比較対象を分割ウィンドウで開く
:diffthis           " 現在のウィンドウをDiffモードに
(もう一方のウィンドウに移動して)
:diffthis           " こちらもDiffモードに

:diffoff            " Diffモード終了

差分がある箇所がハイライトされ、一致している部分は自動的に折りたまれます。

折りたたみ(フォールディング)

長いコードの全体像を把握するために、関数やブロック単位でコードを折りたたみます。

" インデントベースで折りたたむ設定
:set foldmethod=indent

zc   " カーソル位置のブロックを閉じる (Close)
zo   " カーソル位置のブロックを開く (Open)
zR   " 全て展開する
zM   " 全て閉じる

.vimrcにおすすめの表示設定

以下の設定を ~/.vimrc に記述しておくと、コーディングが快適になります。

" 行番号を表示(絶対行番号)
set number
" 現在行からの相対行番号を表示(移動コマンドの数字計算に便利)
set relativenumber

" 現在の行をハイライト
set cursorline

" 不可視文字(タブや行末スペース)を可視化
set list
set listchars=tab:»·,trail:·

" 文字コードと改行コードの確認・変換
set fileencoding    " 確認
set fileformat      " 確認
set fileformat=unix " 改行コードをLFに変換

まとめ:Vimマスターへの道

今回紹介した機能は、Vimの持つポテンシャルのほんの一部ですが、これらを使いこなすだけで「単なるテキスト入力」から「高速なコード編集」へと次元が変わります。

特に「ウィンドウ分割」「マクロ」は、一度覚えると他のエディタには戻れないほどの快適さを提供してくれます。
焦らず一つずつ、日々の業務に取り入れてみてください。

コメント