Small Changes

「ワシの使っているNeovimプラグインは200個近くあるぞ」を読んで気になったプラグインたち

ワシの使っているNeovimプラグインは200個近くあるぞを読んで気になったプラグインがいくつかあったので実際に触ってみたいと思います。

気になったVimプラグイン

私はVim8を使っているので、VimScriptで作られているもの(Vim8でも使えるもの)で気になったものを実際に触ってみました。

1. unblevable/quick-scope

1発目からものすごく便利なプラグインでした!

Vimにはf<char>という行内移動のときに今いる位置から指定した文字列の場所に移動できる機能があります。

便利だなーと思いつつも普段は脳死でwb連打したほうが移動したい場所へ移動できるので今まで出番はありませんでした。

このquick-scopeというプラグインは、Vimの行内移動をパワフルにする便利なプラグインです。

下記は1月から12月までの英単語を一行にした文章です。赤枠の箇所がこのプラグインを入れることでハイライトされている文字です。何がすごいの?と最初は思いました。これから説明しますね。

例えば、januaryのjにカーソルがあるとします。f<char>でaprilのaに移動したいときにfaとすると移動することができますが、そこまでにaという文字がある場合はその回数分目視で確認しながら移動しないといけません。これは移動したい位置と自分の位置が離れていれば離れているほどわかりにくいです。

quick-scopeはもの凄く賢いプラグインです。自分の位置からaprilという単語に移動する際に、aprilのどの文字をキーにすれば最短でたどり着けるかを計算してその文字をハイライトしてくれています。この場合は、pがハイライトされているのでfpが最短の道のりです。おそらく、januaryのjからaprilまでにaだと4回登場しているのでたどり着くまでに時間がかかります。それを計算したうえで、pであれば一度も登場していないので1回でたどり着けます。

このプラグインでハイライトされている文字列をキーにf<char>すると、大体2~3回のストロークで移動したい先の単語に移動できるみたいです!これは継続して使ってみたいと思います。

2. haya14busa/vim-edgemotion

これも神プラグインでした!縦移動を超強化してくれます。

詳細は作者の方の記事が分かりやすいのでそちらを見てみてください。

私のユースケースでこれがめちゃくちゃ光ると思ったのは超長いRSpecの移動です。このプラグインを入れれば今いる縦位置の次の文字にぶち当たるところまで移動してくれるので、超長いcontextの中にいるときに一発でcontextのところに移動などができます。

また、今いる場所に文字があって、縦移動先にも文字が連続で続く場合は逆に文字がないところまで移動してくれるのでとても便利です。言語に依存しない汎用的な仕組みな所もとても嬉しいです。これも継続して使ってみようと思います。

3. AndrewRadev/linediff.vim

これは地味に便利なプラグインです。

行選択して簡単にdiffをVim上で表示できます。

意外にVimの標準機能だけでdiffを表示しようとすると結構手順が面倒でたまにしかやらないので覚えてられないです。

例えば、AとBのバッファの差分を見たいときに手順です。

  • 1. vi でVimを立ち上げる。ここに内容を貼り付け。※Aのバッファ

  • 2. :vnewで無名バッファ作り、内容を貼り付け ※Bのバッファ

  • 3. Aのバッファで:diffthisする

  • 4. Bのバッファで:diffthisする

linediff.vimを使った場合は、どこのバッファ毎ではなく行ごとに差分を見れるのと選択して:Li入力してTAB押すと補完されるので手順も単純になって便利です。

継続して使ってみようと思います。

4. segeljakt/vim-silicon

選択した部分のコードを画像として出力できるプラグインです。

公式のデモをみると、撮影されたスクリーンショットはよくTwitterなどで見かける感じできれいに撮影されるみたいです。

インストールを試してみたのですが、siliconをダウンロードするためにたくさんの依存関係があり、最終的にはfreetype2のインストールがUbuntu20.04にできず断念しました。

Ubuntuだと依存が多いこともあり普段の環境ではそこまで使いませんし今回は入れないことにしました。

今後、どうしても必要になる機会が出てきたら挑戦してみようと思います。

5. rhysd/committia.vim

これはターミナルからgit commitとするとVimが起動して3つのバッファ(コメント用、ステータス用、差分確認用)が表示されるのでコミットするときに差分確認しながらコミットメッセージを入力できる便利なプラグインです。

私はvim-fugitiveを愛用しているのですが、vim-fugitiveとは連携していなさそうです。。基本的にはVim内でコミットすることが多いので今回は入れないことにしました。

6. hotwatermorning/auto-git-diff

最近、インタラクティブリベースを覚えてターミナルから多用しています。

これはそんな人にとてもおすすめなプラグインです。

インタラクティブリベース時、例えばgit rebase -i HEAD~2としたときにコミット一覧が表示されますが、普段だとdiffは見れません。ですが、このプラグインを入れるとインタラクティブリベース時にコミットごとのdiffが表示されるようになります。

これも継続して使っていこうと思います。

7. dhruvasagar/vim-table-mode

テーブルを簡単に作成できます。幅なども自動で調整してくれるのでこれは重宝しそうです。

デモは下記の記事が分かりやすかったです。

これも便利なのでいれておこうと思います。

まとめ

元記事のおかげで便利なVimプラグインを知ることができました!

個人的に最近インタラクティブリベースを多用するようになってきたので、auto-git-diffは地味に神プラグインだと思いました。なかなか検索にはヒットしなかったプラグインを知れてとても有益なので気になった人は元記事の方をお読みいただければと思います!