ワシの使っている Neovim プラグインは 200 個近くあるぞを読んで気になったプラグインがいくつかあったので実際に触ってみたいと思います。
気になった Vim プラグイン
私は Vim8 を使っているので、VimScript で作られているもの(Vim8 でも使えるもの)で気になったものを実際に触ってみました。
1. unblevable/quick-scope
unblevable/quick-scope: Lightning fast left-right movement in Vim
1 発目からものすごく便利なプラグインでした!
[[Vim]]にはf<char>
という行内移動のときに今いる位置から指定した文字列の場所に移動できる機能があります。
便利だなーと思いつつも普段は脳死でw
やb
連打したほうが移動したい場所へ移動できるので今まで出番はありませんでした。
この 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
https://github.com/haya14busa/vim-edgemotion
これも神プラグインでした!縦移動を超強化してくれます。
詳細は作者の方の記事が分かりやすいのでそちらを見てみてください。
コードのエッジへ移動しろ! vim-edgemotion 作った - haya14busa
私のユースケースでこれがめちゃくちゃ光ると思ったのは超長い RSpec の移動です。このプラグインを入れれば今いる縦位置の次の文字にぶち当たるところまで移動してくれるので、超長い context の中にいるときに一発で context のところに移動などができます。
また、今いる場所に文字があって、縦移動先にも文字が連続で続く場合は逆に文字がないところまで移動してくれるのでとても便利です。言語に依存しない汎用的な仕組みな所もとても嬉しいです。これも継続して使ってみようと思います。
3. AndrewRadev/linediff.vim
https://github.com/AndrewRadev/linediff.vim
これは地味に便利なプラグインです。 行選択して簡単に diff を[[Vim]]上で表示できます。
意外に[[Vim]]の標準機能だけで diff を表示しようとすると結構手順が面倒でたまにしかやらないので覚えてられないです。
例えば、A と B のバッファの差分を見たいときに手順です。
- vi で[[Vim]]を立ち上げる。ここに内容を貼り付け。※A のバッファ
:vnew
で無名バッファ作り、内容を貼り付け ※B のバッファ
- A のバッファで
:diffthis
する
- A のバッファで
- B のバッファで
:diffthis
する
- B のバッファで
linediff.vim を使った場合は、どこのバッファ毎ではなく行ごとに差分を見れるのと選択して:Li
入力して TAB 押すと補完されるので手順も単純になって便利です。
継続して使ってみようと思います。
4. segeljakt/vim-silicon
https://github.com/segeljakt/vim-silicon
選択した部分のコードを画像として出力できるプラグインです。
公式のデモをみると、撮影されたスクリーンショットはよく[[Twitter]]などで見かける感じできれいに撮影されるみたいです。
インストールを試してみたのですが、silicon
をダウンロードするためにたくさんの依存関係があり、最終的にはfreetype2
のインストールが Ubuntu20.04 にできず断念しました。
Ubuntu だと依存が多いこともあり普段の環境ではそこまで使いませんし今回は入れないことにしました。
今後、どうしても必要になる機会が出てきたら挑戦してみようと思います。
5. rhysd/committia.vim
https://github.com/rhysd/committia.vim
これはターミナルからgit commit
とすると[[Vim]]が起動して 3 つのバッファ(コメント用、ステータス用、差分確認用)が表示されるのでコミットするときに差分確認しながらコミットメッセージを入力できる便利なプラグインです。
私は vim-fugitive を愛用しているのですが、vim-fugitive とは連携していなさそうです。。基本的には[[Vim]]内でコミットすることが多いので今回は入れないことにしました。
6. hotwatermorning/auto-git-diff
https://github.com/hotwatermorning/auto-git-diff
最近、インタラクティブリベースを覚えてターミナルから多用しています。
これはそんな人にとてもおすすめなプラグインです。
インタラクティブリベース時、例えばgit rebase -i HEAD~2
としたときにコミット一覧が表示されますが、普段だと diff は見れません。ですが、 このプラグインを入れるとインタラクティブリベース時にコミットごとの diff が表示されるようになります。
これも継続して使っていこうと思います。
7. dhruvasagar/vim-table-mode
https://github.com/dhruvasagar/vim-table-mode
テーブルを簡単に作成できます。幅なども自動で調整してくれるのでこれは重宝しそうです。
デモは下記の記事が分かりやすかったです。
markdown での Table 作成時に肩のチカラが抜けるプラグイン vim-table-mode を導入してみた | DevelopersIO
これも便利なのでいれておこうと思います。
まとめ
元記事のおかげで便利な[[Vim]]プラグインを知ることができました!
個人的に最近インタラクティブリベースを多用するようになってきたので、auto-git-diff は地味に神プラグインだと思いました。なかなか検索にはヒットしなかったプラグインを知れてとても有益なので気になった人は元記事の方をお読みいただければと思います!