技術

Neovim3 (設定カスタマイズ)

Neovimを使うようになって数日たちました。

まだまだJetbrainsやVSCodeの代替になるほど整備できていませんが、段々とブラッシュアップされ、自分の中のVimに対する知見もたまってきました。

外出しファイルの名前衝突について

init.luaにボンボン入れていた設定を、外出ししてrequireするようにしていったのですが、さらにそこでrequireする場合、ちゃんと動作しないことが判明しました。

どうやら名前衝突が原因のようです。

lua配下に適当なディレクトリをつくってその中にファイルを入れ、それを読み込んだら動作しました。

というわけで、今はフォルダ構成はこんな感じになっています。

userというちょっと意味不明なディレクトを通していて、ちょっと気持ち悪いですが、とりあえず動くようになったのでこれで良しとします。

keymap導入

keymapを導入し始めました。

Vimの標準操作に慣れたいということもあって、keymapの導入はしばらく控えていたのですが、さすがに辛くなってきたので導入しました。

Leaderを設定しました。Vimにはこういうものが合ったんですね。知りませんでした。Leaderは言葉で説明するのは難しいのですが、割り当てキーを増やすことでしょうか。Spaceを設定するのが一般的なようです。

Vimのキーマップを設定するとき、CtrlやCmdはVimそのものやターミナルの標準ですでにいろいろ割り当てられていることが多いので、キーの衝突が起こり設定しづらいです。そこでLeaderを使うことで設定を回避できます。

例えば私は、フォーマットを Leader+l に設定しました。これで、space -> l と入力すれば整形がかかります。ちなみにlにしたのは、Jetbrainsの整形がlに割合っていて、手が慣れているからです。

keymapの設定方法はまだよくわかっていないのですが、vim.keymap.setとvim.api.nvim_set_keymapがある見たいですね。luaを使う時はvim.apiを、使わないときはvim.keymapを使う感じでしょうか?

マウスが効かなくなった問題

設定している内に、Neovimでマウスが効かなくなりました。

iTermのターミナル上でコピペしようとしたときに、mouse reportingをdisableしたのが原因のようです。

iTermの設定で Profile -> Terminal で、 Enable mouse reportingにcheckを入れたらVimでも動くようになりました。

keymapとマウスはまだ、NeovimとiTermで上手いこと共存できる設定が固まっていないです。Vimを優先するとiTerm上でコピペやAltを使ったカーソル移動ができなくて、どうしたものか悩み中です。

hop(EasyMotion)を導入。感動しました。

パッケージをどんどん追加していっているのですが、その中でもhopというパッケージが個人的には衝撃的でした。

https://github.com/phaazon/hop.nvim

もともとEasyMotionというパッケージがVimにあって、それをNeovimでも動作するようにしたものらしいです。このEasyMotionというのはVim界では有名らしいですね。私は知りませんでしたが。。。

このパッケージはカーソルのジャンプを補強してくれる機能を提供してくれるものです。これを入れることで、カーソルの移動、ジャンプが格段に早くなります。

この存在を知れただけでも、今回Neovimの挑戦を始めてよかったと思います。そう思えるぐらい、世界が変わりました。

JetbrainsやVSCodeでも似たような機能のプラグインがないか、探してみようと思っています。

Git周りはいまいち

NeovimはGit周りに関しては、いまいちだと思います。

私が使いこなせないのを差し引いても、JetbrainsやVSCodeには遠く及ばないかと思います。

Neogitというのを入れて見ましたが、ResetやMergeができないしログのツリー表示もできなさそうです。他のパッケージと組み合わせればできるかもしれませんが、調べ切れていないです。

そもそもGitに関してはキーボードでガンガン操作するというよりは、リッチなUIでポチポチやりたいのでVimの思想とは合わない気がします。

Neovimを使いつつ、Git操作時は別クライアントとの併用を考えてもいいかもと思っています。

まとめ

以上、Neovimの設定について3記事目でした。

パッケージもどんどんインストールしていき、徐々に凝った設定も入れはじめました。

生産性を向上したくてNeovimに挑戦しはじめましたが、最近は仕事よりNeovimの設定をしている時間の方が長くて本末転倒な気がしています😅

でも設定すること自体楽しいですし、いずれ挽回できるはずなので、これからもNeovimカスタムし続けていきます!