はじめに
VimmerがVimからNeovimに移行したいと考えるきっかけは色々あると思います。
私は半年ほど前からVimを利用していますが、もっと「シンタックスハイライトをよりカラフルにしたい」「カッコよくカーソル移動したい」といった欲望がありました。
一方で、それらを実現するプラグインがNeovimにしか対応していないことは少なくありません。
本記事では、VimからNeovimへの段階的移行とその魅力について紹介します。 移行方法の記事は既に多く存在していますが、あくまでも著者視点で楽しくお伝えできれば幸いです。
- はじめに
- 1. VimとNeovimの違い
- 2. VimからNeovimへの移行
- 3. lazy.nvimのインストール
- 4. nvim-treesitterのインストール
- 5. Neovideのインストール
- まとめ
1. VimとNeovimの違い
多くの初心者が、「VimとNeovimって何が違うの?」という疑問を持っていると思います。
違いを説明しようと思いましたが、文章よりも断然分かりやすい動画を見つけてしまったので共有します。
Neovim公式ドキュメントにもいくつかFeaturesとして掲載されています。
個人的には、
- 設定やプラグインをLuaで書ける
- LSPの組み込みサポート
- モダンなターミナル機能(カーソルの形状やイベントフォーカス、bracketed-pasteなど)
- ASTを生成する構文解析エンジン(Tree-sitter)による高速で正確なシンタックスハイライト
- tmuxのようにUIをデタッチしてエディタセッションを実行し続けることが可能
などが印象的でした。
技術書典17で購入した『いまからはじめる Vim コマンド実践入門』でも、「カスタマイズしなくても使いやすい」という点でNeovimから使い始めることが推奨されていました。ただし、VimとNeovimそれぞれの優位性が挙げられていたので気になる方はぜひ読んでみてください。
私もVim初心者のときに真っさらな.vimrc
からスタートして、快適にコーディングできるようになるまでかなりカスタマイズが必要でした。
Neoという接頭辞のイメージに引っ張られがちですが、NeovimがVim初心者にとって有力な選択肢となっているのは間違いなさそうです。
2. VimからNeovimへの移行
いきなりNeovimに完全移行するのはハードルが高いと感じるかもしれません。
今回は段階的移行を目指して、公式ドキュメントのTransitioning from Vimをやってみます。
$ brew install neovim $ nvim
次に、公式ドキュメント通りに「Neovimコマンドでinit.vim
を作成」→「init.vim
に内容追加」→「Neovimの再起動」を行います。
Neovimを使ってNeovimに移行しているのが面白いです。
Vimの設定をNeovimに引き継ぐことができました。私はvim-plugを利用していたので、Neovimを再起動してから:PlugInstall
することでエラーは全て消えました。
NeovimでもVimscriptで設定を書くことができます。~/.config/nvim/init.vim
をよく見ると、Vimのruntimepathを指定したり、Vimの設定ファイルを実行したりしていることが分かります。
一旦は実家のような安心感を得ることができましたが、せっかくNeovimなのでLuaサポートの恩恵を受けたいですし、モダンなプラグインマネージャーにも変更したいです。
~/.config/nvim/init.lua
を作成するにあたって、公式ドキュメントに以下のような記載があります。
Using Lua files on startup
Nvim supports using
init.vim
orinit.lua
as the configuration file, but not both at the same time. This should be placed in your config directory, which is typically~/.config/nvim
for Linux, BSD, or macOS, and~/AppData/Local/nvim/
for Windows. Note that you can use Lua ininit.vim
and Vimscript ininit.lua
, which will be covered below.
init.vim
とinit.lua
の両方を同時には利用できませんが、init.lua
でVimscriptを利用できるようです。
やや強引ですが、以下のようにinit.lua
内でVimコマンドを実行することもできます。
$ mv ~/.config/nvim/init.vim ~/.config/nvim/_init.vim $ echo "vim.cmd('source ~/.config/nvim/_init.vim')" > ~/.config/nvim/init.lua
ここから少しずつLuaの設定を増やしていく方向性もあり得るかもしれません。
私は結局、真っさらなNeovimから始めることにしました。理由は、Neovimで快適にコーディングできるようになるまでは使い慣れたVimでも十分だと思ったからです。
3. lazy.nvimのインストール
プラグインマネージャーとしてVimではvim-plugを利用していましたが、高速な起動とパワフルなUI、そして何よりNeovim専用のプラグインマネージャーであることに憧れていたのでlazy.nvimに移行します*1。
lazy.nvimは公式ドキュメントのInstallationとAdding Pluginsにしたがってインストールしました。
:Lazy
コマンドで表示されるUIが綺麗
lazy.nvimをインストールするついでに、プラグインとしてdashboard-nvim(ダッシュボード)とmonokai-pro.nvim(カラースキーマ)を追加しました。テンションが上がるのでオススメです。
現時点でのディレクトリ構成は以下の通りです。
$ tree ~/.config/nvim /Users/azuma/.config/nvim ├── init.lua ├── lazy-lock.json └── lua ├── config │ └── lazy.lua └── plugins ├── dashboard.lua └── monokai-pro.lua 4 directories, 5 files
lua/plugins/*.lua
のプラグインが、lua/config/lazy.lua
で以下のようにインポートされています。
-- Setup lazy.nvim require("lazy").setup({ spec = { -- import your plugins { import = "plugins" }, }, -- 省略 })
プラグインが大量にある場合は、ファイル分割のおかげで見通しが良くなりそうです。
公式ドキュメントにもありますが、specに{ "LazyVim/LazyVim", import = "lazyvim.plugins" }
と追記すると、LazyVimというlazy.nvimのためのセットアップが手に入ります。
LazyVimを利用すると一瞬で本格的なIDEになりますが、プラグインを1つ1つ追加するワクワク感が無くなりそうだったのでやめました。
Neovim盆栽を楽しみます。
4. nvim-treesitterのインストール
冒頭でもお伝えしたように、Vimのシンタックスハイライトが足りないと感じる場面があります。
私の.vimrc
ではsyntax enable
でシンタックスハイライトを有効化し、coc.nvimのためのGoのLSPであるcoc-goが詳細なシンタックスハイライトを提供してくれているはずです。それでもVSCodeにカラフルさで劣ってしまいます。
Neovimではnvim-treesitterというプラグインを利用できます。
そもそもTree-sitterはパーサー(構文解析器)を自動生成するツールであり、インクリメンタルな分析ができるC言語で書かれたライブラリです。nvim-treesitterはTree-sitterのインターフェースをNeovimで利用するためのシンプルで簡単な方法を提供してくれているそうです。
WikiのInstallation#lazy.nvimにしたがってインストールします。
このタイミングでLSP周りの設定も必要になりますが、以前利用していたcoc.nvimではなくNeovimのBuitin LSPを利用することにしました。慣れていない私には設定が少し複雑でしたが、以下の記事が基本的な内容から解説してくれていて非常に参考になりました。
:LspInstall gopls
でGoのLSPをインストールした後、シンタックスハイライト確認します。
NeovimでもVS Codeと同じくらいカラフルなシンタックスハイライトが付与されるようになりました。
5. Neovideのインストール
待ちに待ったカーソル移動アニメーションを実現する日が来ました!(知人に「それ要らなくない?」と言われました…これは浪漫です)
実はNeovideにはそれ以外にも本当に多くの機能があります。
Smooth ScrollingとAnimated Windowsは特に便利そうです。
左がNeovim、右がNeovideです。
スムーズなスクロールはもちろんですが、もっと驚いたのは解像度です。Neovideではすごく鮮明にテキストが表示されています。
これからはalias vim=neovide
としたうえで、さらにカスタマイズも楽しんでいきたいです。
まとめ
本記事ではVimからNeovimに段階的に移行する方法を簡単に紹介し、いくつか印象的なプラグインやGUIをインストールしてみました。
まだまだNeovimに入れるべきプラグインはたくさんありますが、盆栽がある程度落ち着いたらオススメのプラグインをまとめようと思います。
参考までに私のdotfilesリポジトリのURLも掲載しておきます。
*1:プラグインマネージャーの変遷については以下の記事が詳しいです。プラグインマネージャーの歴史と新世代のプラグインマネージャー dpp.vim