Vimの縦移動を強化する


こちらの記事は Vim2 Advent Calendar 2019 10日目の記事になります。

縦移動が弱いと言われがちのVim。
確かに縦に狙った場所にバチッと移動するのは難しいような気がします。
バッチバチに動きたかったので、何か良い方法が無いか調べてみました。

行番号を相対表示にする

簡単かつ効果が大きかったものです。
行番号は、デフォルトでは絶対表示(頭からn行目)ですが、相対表示(カーソルからn行目)にすることができます。
相対表示にする事で、目的地までの距離がわかりやすくなり、カーソル移動やオペレータ範囲指定が爆速になります。

例: 画像のattr_encryptedの行まで移動したい場合
6jで該当の箇所に移動できます。
行番号部に6と表示されているため、現カーソルの6行下だということが瞬時にわかります。

設定

vimrcに以下を書くだけです。

.vimrc
set relativenumber

% による移動の強化

Vimでは、(){}など、対になる括弧は%で行き来することができ、縦移動の際によく使っていました。
この%による移動をプラグイン、vim-matchupを導入して強化します。

vim-matchup

vim-matchupを使うと、(){}など以外にも、条件分岐などからの「オープン」「クローズ」「ミッド」の単語を検出し、%で移動することができます。

また、%+αの便利なコマンドが用意されています。


- ]% [%
外側の開閉単語へ移動
- z%
開単語の中に移動
- dz%
次の開単語まで削除

対応単語·記号のハイライト表示もされます。便利です。

設定

お使いのVimプラグインマネージャーを使ってプラグインをインストールしましょう
例: dein.vim + toml

toml
[[plugins]]
repo = 'andymass/vim-matchup'

縦方向f移動の実装

縦移動に関する記事を探していたら、偶然同じカレンダーで記事を書かれている方がいらっしゃいました。
こちらは当カレンダー2日目の記事で紹介されている方法です。
.vimrcに4行書くだけでSpacefを使った縦移動を実装することができます。
バチッと移動できますね。

Vim で縦方向 f 移動を実現した (@monaqaさん)
https://qiita.com/monaqa/items/9764e957523ad0b56aec

おわりに

  • 行番号を相対表示にする
  • % による移動の強化
  • 縦方向f移動の実装

3つしか紹介できなかったのですが、どれも便利な機能なので
是非試してみてください。