モチベーション
Neovim1の設定をするのは楽しいが、同時に「こんなことをしている暇はない」2という思いもある。
そこで、インストールすればすぐに使えるよう各種プラグインがプリセットされたNeovim IDE パッケージを下記にメモする。
LunarVimを導入してみたが、もっさりとした動作に耐えきれず結局、元のkitty+(素の)Neovimに戻った。プラグインについて、vim-plugだとコンフィグがバラバラになって管理しきれなくなるので、packerを使うのが大事。
要件
欲しい機能は下記。
- Julia環境
- 関数の自動補完。
- REPL実行環境
- Markdown環境
- リアルタイムのプレビュー表示。CSSでのカスタマイズあり。
- 数式が表示できること。
- 全文検索
- Lightテーマ。
- 一般要件
- デザイン、信頼性、高速性、容易性、等
IDE パッケージ
どのようなパッケージがあるかは、下記のような用語でGithubを検索すると良い。なお同様の手法で、Emacsについても調べられる。
下記のパッケージ横の☆は、Github上でのスター数。各パッケージとも、Githubだけでなく自身のHPを立ち上げているあたり、やる気が見て取れる。
NvChad ☆15.1k
一番人気のパッケージ。速度が重視されているらしい。元はsiduckさんの個人プロジェクト。
Lightテーマがないようなので、パス。
LunarVim ☆13.5k
カスタマイズ性と高速性を重視しているとのこと。ドキュメントも充実している印象。NvChadとは対象的に、コミュニティ重視。
導入
公式 (英語)を参考に、ターミナルに下記を入れる (Ubuntuの場合)。Macならsudo apt-get install -y
がbrew install
とかになるはず。最終行のNeovimのインストールそのものは、5分程度かかる。また、初回起動時はプラグインのインストールに1分程度、時間がかかる。
既存の設定は (多分) 上書きされない。
# bash
sudo apt-get install -y git
sudo apt-get install -y make
sudo apt-get install -y pip
sudo apt-get install -y python
sudo apt-get install -y npm
sudo apt-get install -y nodejs
sudo apt-get install -y cargo
LV_BRANCH='release-1.2/neovim-0.8' bash <(curl -s https://raw.githubusercontent.com/lunarvim/lunarvim/fc6873809934917b470bff1b072171879899a36b/utils/installer/install.sh)
echo 'export PATH=/home/user/.local/bin:$PATH' >> ~/.bashrc; source ~/.bashrc
lvim
lvim
起動後に、下記。LSPの名称については、ここのページ下部を参照。
" lvim
:TSInstall julia markdown
:LspInstall julials marksman
:!mkdir ~/.config/lvim/ftplugin
:e ~/.config/lvim/ftplugin/julia.lua " 下記コードを書いて保存
-- ~/.config/lvim/ftplugin/julia.lua
local opts = {}
-- re-use common lsp configurations (keybindings, buffer-highlight and cmp integration)
opts = require("lvim.lsp").get_common_opts()
require('lspconfig').julials.setup(opts)
# bash
julia --project=~/.julia/environments/nvim-lspconfig -e 'using Pkg; Pkg.add("LanguageServer")'
必要に応じてNerdフォントも入れる。例えば下記。git clone
に30分ほどかかるので注意。その後、gnome-terminal
やiTerm2
にフォントを設定してやる。
# bash
git clone https://github.com/ryanoasis/nerd-fonts
cd nerd-fonts
./install.sh FiraCode
キーバインド
デフォルトのキーバインドは、例えば下記。
キー | 操作 | モード |
---|---|---|
<Space> (1秒待ち) |
which-key | ノーマル |
<Space>-e |
edit file (nvim-tree) | ノーマル |
<Space>-f |
find file (telescope) | ノーマル |
<Space>-; |
スタート画面 | ノーマル |
<Ctrl>-\ |
ターミナル | ノーマル |
<Space>-bb/bn |
タブ移動(左右) | ノーマル |
<Space>-bj |
タブ移動(ヒント) | ノーマル |
設定
~/.config/lvim/config.lua
に設定を行う。
-- ~/.config/lvim/config.lua
vim.o.background = "light"
キーマップ
キーマップの設定についてはここ。
プラグイン
~/.config/lvim/config.lua
内に、例えば下記のように設定する。設定後、:PackerSync
を実行する。
-- ~/.config/lvim/config.lua
lvim.plugins = {
'morhetz/gruvbox',
'psliwka/vim-smoothie',
'JuliaEditorSupport/julia-vim',
}
カラースキーム
<Space>-sp
で色々なスキームを試せるので、そこで自分が好きなものを見つけて、下記を設定ファイルに書き込む。なお、Vimカラースキームの選択はこのページを見て行うのが効率的。
-- ~/.config/lvim/config.lua
AstroNvim ☆6.8k
失礼な言い方だけれど、LunarVimの下位互換のイメージ。
LazyVim ☆4.2k
プラグインマネージャーであるlazy.nvim
を核としたパッケージ。一部で、独自のキーバーインドを採用しているように見える。
並べてみると、どのプラグインも似ている。実際使ってみても、そこまで大きな差はないのだろうと予想される。
nvim-config ☆2.3k
コミュニティではなく、個人が作ったパッケージ。
SpaceVim ☆19.7k
恐らく (Neoでない) Vimでは唯一のIDEパッケージ。SpaceEmacsからインスピレーションを受けていて、スペースキーが操作の鍵になる設定がなされている。レイヤーという独自の設定層を設けていて、init.lua/vim
を触らなくてもNeovimの設定が行えるようになっている。以前に入れた際には、SpaceEmacsと同様、動作がもっさりだった記憶がある。
HPを見る限り、Juliaがサポートされていないように見えるので、見送り。
-
①Visual Studio Codeは使いやすいし動作も高速なのだが、ところどころでマウスを使わないといけない操作が入るのが嫌い。②Emacsはマウスなしでもいけるが、素早いカーソル移動をしようと思うと、やはりマウスが必要になる。Evilは挙動が不安定な場合があり、キーバインドのカスタマイズがしにくい。また、パッケージが昔ながらの「ソース読め」なので、導入コストが高い。③(Neo)vimはその点、カーソル移動が高速で行え、カスタマイズ性もバランスが良いように感じられる。 ↩
-
LSPの設定、似たようなプラグインの中からの選定、プラグインを入れる順番、こちらを入れるとあちらが動かない、少し触っている内にどこが原因でエラーが出ているのか分からなくなった、等。Visual Studio Codeならば、とっくに動いて半日コードを書いていたところなのに……のような。 ↩