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

  Linux基礎

Vimの応用テクニック集:作業効率を最大化する高度な使い方

本記事では、Vimの基本操作に慣れた方を対象に、より高度で実用的なテクニックを解説します。Vimはカスタマイズ性が非常に高く、環境や作業スタイルに合わせた最適化が可能です。以下の内容を習得することで、エディタとしてのVimを強力な開発ツールへと進化させることができます。

1. ノーマルモードでの高速移動術

Vimの強みの一つは、テキスト内を高速に移動できることです。以下のコマンドを活用することで、スクロールやジャンプ操作を効率化できます。

  • w:次の単語へ
  • b:前の単語へ
  • e:単語の末尾へ
  • 0:行頭へ
  • ^:最初の非空白文字へ
  • $:行末へ
  • gg:ファイルの先頭へ
  • G:ファイルの末尾へ
  • fx:その行の次のx文字へ
  • F:その行の前のx文字へ
  • ; ,:直前のf/Fを繰り返す

2. ビジュアルモードの活用術

ビジュアルモードは、範囲選択して編集する際に便利なモードです。以下のような使い方があります。

  • v:文字単位の選択開始
  • V:行単位の選択
  • Ctrl+v:矩形(ビジュアルブロック)選択

矩形選択後にIキーで挿入操作、dで削除、rで置換などが可能です。たとえば縦に整列したコメントに一括で//を追加するなどに使えます。

3. レジスタを使った高度なコピー&ペースト

Vimでは複数のレジスタ(内部バッファ)を使ってテキストを一時的に保存し、再利用できます。

  • "ayy:aレジスタに1行コピー
  • "ap:aレジスタの内容をペースト
  • "*yy:システムのクリップボードにコピー(GUI版または設定済みの場合)

:registersで利用可能なレジスタ一覧を表示できます。

4. 検索と置換を極める

正規表現と組み合わせることで強力な検索&置換が可能です。

:%s/old/new/g       ファイル全体で置換
:5,20s/foo/bar/g    5〜20行目のみ置換
:%s/\s\+$//g        行末の空白削除
:%s/^\(.\+\)$/\1;/g  各行末にセミコロン追加(正規表現活用)

5. カーソル位置を保存するマーク機能

特定の位置をすばやく記憶・ジャンプするには、マーク機能を活用します。

ma   現在位置をaマークとして記録
'a   マークaへ移動(行頭)
`a   マークaへ移動(正確な位置)

プロジェクト内で関数や変数の定義に一時的に戻りたいときに便利です。

6. ターミナルモードの活用(Vim 8以降)

:terminalコマンドでVim内にシェルを起動できます。作業中のままビルドやGit操作が可能になります。

:terminal       Vim内でシェルを起動
Ctrl-w N        ノーマルモードに切り替え
Ctrl-w :q       ターミナルを閉じる

7. スニペット(UltiSnipsなど)の導入

プラグインを導入すれば、テンプレート入力が劇的に高速化します。

" .vimrc
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'

" スニペット展開キー(例:Tab)
let g:UltiSnipsExpandTrigger = ''

HTML、Python、Shellなど多数のスニペットを用意しておけば、入力作業の効率が大幅に上がります。

8. カスタムコマンドの作成

よく使う処理をコマンドに登録すれば、作業をさらに効率化できます。

" .vimrc
command! StripTrailingSpaces %s/\s\+$//e

:StripTrailingSpacesと打つだけで、全行末のスペースを削除できます。

9. 自動補完(YouCompleteMe や coc.nvim)

コード補完を実装すれば、IDEに近い体験をVimで得られます。人気プラグインは以下の通りです。

  • coc.nvim(Node.jsベースのLSP補完)
  • YouCompleteMe(ネイティブ補完エンジン)

例えば coc.nvim の導入例:

Plug 'neoclide/coc.nvim', {'branch': 'release'}

あとは:CocInstall coc-json coc-tsserverなどで言語サーバーを追加できます。

10. カーソルを元の位置に戻す便利なマーク

ファイルを開いたときに前回のカーソル位置にジャンプさせる方法です。

" .vimrc
autocmd BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal g`\"" | endif

これにより、前回作業していた位置からすぐに作業を再開できます。

11. VimとGitの連携(Fugitive.vim)

Gitを使っているなら、tpope/vim-fugitiveは必須レベルです。

:Gstatus       Gitステータス表示
:Gdiffsplit    差分をVim上で比較
:Gblame        行ごとの責任者を表示
:Gcommit       VimでGitコミット

12. カーソル移動記録ジャンプ(ジャンプリスト)

Vimでは直前のジャンプ操作の履歴を記録しています。

Ctrl+o   戻る(jump back)
Ctrl+i   進む(jump forward)

たとえば定義にジャンプして編集後、元の位置に戻るなどの操作に役立ちます。

13. スクロール操作の高速化

Ctrl+d    半ページ下へ
Ctrl+u    半ページ上へ
Ctrl+f    1ページ下へ
Ctrl+b    1ページ上へ
zz        カーソル位置を画面中央に

特にログや長文ファイルを扱うとき、素早い視点移動に便利です。

14. 閉じタグ補完や自動整形

プラグイン auto-pairsvim-prettier などでHTMLやJSONの整形を自動化できます。

Plug 'jiangmiao/auto-pairs'
Plug 'prettier/vim-prettier', {
  \ 'do': 'npm install',
  \ 'for': ['javascript', 'typescript', 'json', 'css', 'html']
}

保存時に自動整形する設定も可能です。

15. VimをIDE化するための最終構成

  • NERDTree:ファイルエクスプローラー
  • vim-airline:ステータスライン美化
  • fzf.vim:ファイル・履歴検索
  • coc.nvim:コード補完
  • gitgutter:Git変更可視化

これらを組み合わせることで、Vimは本格的な統合開発環境となります。

まとめ

本記事ではVimの高度な使い方を15項目に分けて紹介しました。ここに挙げたテクニックは氷山の一角にすぎません。Vimの魅力は、「自分専用の開発環境」に進化させられる点です。

実際に日常の編集作業で少しずつ取り入れながら、快適なVimライフを構築していきましょう。Vimは覚えれば覚えるほど、自分の手の延長になります。

LEAVE A COMMENT