Neovimを始めた話
初めに
11月中旬くらいからNeovimを使い始めました。
Neovim自体は以前から知っていたが、自分が普段作っているプラグインがVimでしか動かないことや、Vimでだいたい満足しているのでなかなか使おうって気になれませんでした。
そこでgh.vimというプラグインのNeovim対応をするため、Neovimをビルドしてから少しずつNeovimを使うようになりました。
今日はVimを使ってきた筆者がNeovimを少し使った感想の話をしていきます。
NeovimとVimの違い
Vimは後方互換を大事にしているので劇的な変化があまりないのに対して、
Neovimは時代に合わせてよりモダンな技術を積極的に取り入れる、というスタンスの違いがあるように感じています。
Neovimのモダンな技術といえば次でしょうか。(ほかにもっとあるかもしれないが…)
- ターミナル
- LSP(builtin)
- リモートプラグイン
- Floating windows
実際まだNeovimを使って1ヵ月も経っていないんですが、気になるVimとの差異の部分について説明していきます。
ターミナル
NeovimとVimのターミナルの挙動が割と違っていて、Neovimの場合は:terminal
で現在のバッファをそのまま使います。
対してVimはsplit
してから画面上部にターミナルが表示さるような動きで、現在のバッファを使うかどうかはオプションで指定できます。
:terminal ++curwin
Neovimで現在のバッファを使いたくないときは次のように、で新しいバッファを開いてからターミナルを実行できます。
`:new term://${SHELL}`
NeovimのターミナルはNormalモードで開始するためそのままでは入力できないので、
そのままターミナルを使いたい場合は次の設定が必要です。
augroup neovim-terminal
au!
au TermOpen * startinsert
augroup END
これが結構使いづらいなと感じたところでした。
また、NeovimではターミナルのNormalモードは<C-\><C-N>
というとても打ちづらい(JISキーボード勢なので)キーマップになっています。
Vimでは<C-w><C-N>
になって打ちやすい分、ターミナルで<C-w>
をつかって単語を消せないというツライ部分があります。
一応Vimではtermwinkey
で<C-w>
を変えられますが…
こんな感じでお互い一長一短なところがあります。
カーソル
Neovimでは挿入モードでカーソルの形が|
に変わります。これは個人的にわかりやすくてよいなと思いました。
これVimでも設定で再現できないかなと考えていますが、多分難しいでしょうね…
Vim script
Neovimの処理速度がすこし速いようです。
体感ではありますが、Neovimの動画はVimと比べて軽快な感触があります。
実際次のscriptを使って、処理時間を図ってみました。
fun! s:sum() abort
let sum = 0
for i in range(2999999)
let sum+=i
endfor
endfun
let start = reltime()
for _ in range(5)
call s:sum()
endfor
echo reltimestr(reltime(start))
どうやら体感が正しかったようです。Neovimのが約2秒弱速かったです。
秒数 | |
---|---|
Vim | 19.632893 |
Neovim | 17.632039 |
関数
VimにあってNeovimにない関数や、同じような機能だけどIFが異なっている関数がいくつかありました。
こういった差異が結構プラグイン作者の頭を悩ませるなぁとプラグインを作っていて思いました。
たとえば、win_execute()
という関数はNeovimにはなく、
特定のWindowで何か処理を行うにはwin_gotoid()
で一度ウィンドウに移動しなければ行けないです。
また、job
機能はVim/NeovimともにありますがIFが異なっているので、これもまたやっかいです。
このように、使用感はさほど変わらないけど、少し深いところに足を踏み込むと異なるところがちょいちょいあります。
両方で動作するプラグインを作っているダークパワーを身にまとっている人はやはりすごいなとあらためて思いました。
最後に
一部ではありますが、Neovimについて筆者が感じていることを書きました。
もうしばらくNeovim/Vimを交互に使ってみたいと思っています。
最近ではNeovimがLuaに舵を切ったり、VimはVim9 scriptをガシガシ作ったりしています。
とお互い違う道を歩み始めた感がありますが、Vim/Neovimの良さはそれぞれあるので、みなさんも両方使ってみると新しい世界が見えるかもしれません。
では、よいVim/Neovimライフを。
Discussion
vimrc読書会で誰かがやっているのを見たんですが、これを書くとVimでもカーソルの形が変化するようになりますね
ありがとうございます!