🎃

hardtime.nvimで学ぶ効率的なVim操作法

2024/12/17に公開

「Applibot Advent Calendar 2024」 17日目の記事になります。
前日は @holy-knightOpenID Connectを超ざっくりな感じでまとめてみる という記事でした。

はじめに

Vimは多くのエンジニアに愛用されている強力なテキストエディタですが、その操作をより効率化するためのプラグインが数多く存在します。

今回は、移動方法の効率化を支援するプラグインであるhardtime.nvimを導入してみました。
この記事では、hardtime.nvimを使ってVimでの移動がどのように効率化されたかを紹介します。

hardtime.nvimとは

https://github.com/m4xshen/hardtime.nvim

まずはプラグインの紹介をさせてください。

hardtime.nvimは、Neovim用のプラグインで、Vimにおけるカーソル移動や編集操作の効率化を支援するツールです。

メインの機能として、非効率なキー連打の検知と抑制を行なってくれます。

hardtime01

以上のように、h, j, k, lなどを押しっぱなしにした場合などに、より良い操作の提案と共にキー連打の入力が抑制されます。
キー連打が抑制されることにより、強制的にキー操作の効率化を考えるようになります。

効率化した移動方法

hardtime.nvimを導入することで、これまでの非効率な移動方法が改善され、Vimの移動コマンドを積極的に活用するようになりました。
以下に、具体的な改善されたポイントを紹介します。

縦移動

以前の方法

jkのキーを連打したり押しっぱなしにしたりして移動することが多く、長距離の移動に時間がかかっていました。
Macの設定でキーリピートの間隔を最小にしていたため、ある程度の速さはありましたが、効率的とは言えませんでした。

現在の方法

  • 数字+j/kによる移動10jで10行下に移動するなど、移動したい行数を指定して一気に移動します。押しっぱなしではなく数字込みで移動することが多くなりました。

  • 段落単位の移動{}を使って、空行で区切られた段落ごとに移動します。こちらはかなり多用するようになりました。

  • ページスクロールCtrl + d(半ページ下へ)、Ctrl + u(半ページ上へ)でスクロールします。(がみてる画面ごと移動するのでそこまで好みではない)

  • 画面内の特定位置へ移動H(画面上部へ)、M(画面中央へ)、L(画面下部へ)を使って、見えている画面内を移動します。

  • 検索での移動/(検索) を用いて、関数名などわかっている場合はこちらで飛ぶようにしています。

横移動

以前の方法

hl, wを押し続けて移動することが多かったです。

現在の方法

  • 単語単位での移動w(次の単語の先頭へ)、e(単語の末尾へ)、b(前の単語の先頭へ)をメインで使用しています。h, lを使用しなくても良いように細かい移動を意識するようになりました。

  • 文字検索による移動

    • f{文字}:現在の行で次に現れる特定の文字{文字}へ移動

    • F{文字}:現在の行で前に現れる特定の文字{文字}へ移動

    • ;,:直前のf/Fコマンドを繰り返して移動

  • 行頭・行末への移動^で行頭へ、$で行末へ瞬時に移動します。AIをもちいて、insert込みで移動することもあります。

その他の移動方法

斜め移動の効率化

単純な縦・横移動だけのコマンドではパッと移動できないことがあり、斜め方向へ一発で移動したいと思うことが増えました。

斜め移動や特定の文字列への高速な移動には、別のプラグインであるleap.nvimを併用しています。
leap.nvim は、画面上に表示されている任意の位置へ高速にジャンプできるプラグインです。

hardtime02

上記のように、最初に移動したい場所に含まれる文字を2文字入力すると、該当箇所にマークが表示されます。
その後、表示されたマーク(ローマ字)を入力することで、目的の場所に直接移動できます。これにより、画面上のどんな位置でも素早く移動でき、さらなる移動効率の向上に役立っています。

まとめ

hardtime.nvimを導入したことで、Vimでの移動方法が効率化され、タイピング数がかなり減りました。
連打や押しっぱなしが抑制されることにより、もっと効率の良いvim移動方法がないか、をより調べるようになり、今まで使えていなかった操作が頭に入るようになりました。

Vimをより効率的に使いこなしたい方や、つい基本移動キーを連打してしまう方は、ぜひhardtime.nvimを試してみてください!

参考リンク

https://github.com/m4xshen/hardtime.nvim

https://www.reddit.com/r/neovim/comments/14jferq/hardtimenvim_a_neovim_plugin_helping_you/

https://github.com/ggandor/leap.nvim

Discussion