ニフティのVimmerの一人、会員システムグループの上原です。(Neo)Vimは高速に編集することのできる魅力的なエディタですが、プラグインを加えることで、さらに便利にすることができます。今回は先日導入して便利だと思った、hop.nvimというプラグインを紹介します。
hop.nvimとは?
hop.nvimはより楽にカーソル移動できるようにしてくれるプラグインです。Vimやバージョンが0.5未満のNeoVimに対応していない点には注意してください。
(Neo)Vimではhjklをはじめ、wや%などのさまざまなコマンドを使ってカーソル移動しますが、
加えて、hop.nvimでは移動先の候補にラベルをつけ、ユーザーがそのラベルの中から移動したい場所を選ぶことで、楽にカーソルを動かすことができます。
実際に使ってみる
特定の文字が出現する箇所にラベルをつけて移動する
rが出現する部分にラベルをつけられて、ユーザーがラベルの名前であるhを入力すると、そのラベルに対応する11行目のrにカーソルが移動します。
行単位でラベルをつけて移動する
それぞれの行にラベルをつけられて、ユーザーがラベルの名前であるqを入力すると、そのラベルに対応する11行目にカーソルが移動します。
単語単位でラベルをつけて移動する
単語に対してラベルをつけられて、ユーザーがラベルの名前であるfsを入力すると、そのラベルに対応する11行目のrにカーソルが移動します。
インストール方法
プラグインをインストールするには、プラグインマネージャを利用するのが便利です。プラグインマネージャはいくつかありますが、ここではdeinを使ったインストール方法を紹介します。
hop.nvimをインストールするため、dein.tomlに以下を追記しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
[[plugins]] repo = 'phaazon/hop.nvim' hook_add = ''' lua << EOF require'hop'.setup() EOF nmap <Leader><Leader> [hop] xmap <Leader><Leader> [hop] nnoremap <silent> [hop]w :HopWord<CR> nnoremap <silent> [hop]l :HopLine<CR> nnoremap <silent> [hop]f :HopChar1<CR> ''' |
hook_addにはプラグインに必要な設定を記述します。hop.nvimはlua製のプラグインのため、luaを呼び出して初期処理を走らせる必要があります。最近のNeoVim界隈ではinit.luaにVimの設定を入れるのが流行していますが、deinでlua << EOF ~~~ EOFのように中に記述すれば、init.luaを使わずともluaを呼び出すことができます。
1 2 3 |
lua << EOF require'hop'.setup() EOF |
デフォルトだとキーマップの設定は入っていないので、手動で行います。
以下はLeaderキー(デフォルトだとバックスラッシュ)を2回連続で押すとhop.nvimを呼び出すように設定し、nnoremapでそれぞれの機能にアサインしています。
1 2 3 4 |
nmap <Leader><Leader> [hop] nnoremap <silent> [hop]w :HopWord<CR> nnoremap <silent> [hop]l :HopLine<CR> nnoremap <silent> [hop]f :HopChar1<CR> |
以下に示すコマンドによってラベルの付け方を変えることができます。詳しくは:help hopでhop.nvimのヘルプを見てください。
1 2 3 4 5 6 7 |
:HopWord: 単語にラベルをつける :HopPattern: パターンと一致する部分にラベルをつける(/と同じ) :HopChar1: 単一の文字を検索し、その部分にラベルをつける :HopChar2: 2文字を検索し、その部分にラベルをつける :HopLine: 行にラベルをつける :HopLineStart: 行の最初の非空白文字にラベルをつける |
終わりに
カーソル移動を楽にできるhop.nvimをご紹介しました。NeoVim以外にも最近のエディタには拡張機能がたくさんあるので、ぜひ皆さんもお気に入りの拡張機能を見つけてみてください。