(多分)Neovimの設定に関して
- どんな設定をした/しようとしてるか
- Neovimについて何を知っているか
あたりが割と頭から抜けがちなので備忘録を残す それとToDoとか書く
使ってる環境について
- ハード: MacBook Air 2024
- OS: MacOS 14.5
- ターミナル: Alacritty 0.14.0-dev(1) (#alacritty_terminal_v0.24.0)
- Shell: fish 23.5.0
Neovimのバージョン(現在)
nvim -V1 -v
NVIM v0.10.1
Build type: Release
LuaJIT 2.1.1720049189
HomeBrewのformula上に上がってる最新バージョンが入ってる(はず...)
設定ファイル(最新)
コミット履歴がかなりカオスなことになってる...
導入済みプラグイン一覧(現在)
gitsigns.nvim
lualine.nvim
oil.nvim
nvim-treesitter
plenary.nvim
telescope.nvim
telescope-fzy-native.nvim
nui.nvim
smart-open.nvim
sqlite.lua
mason.nvim
matchparen.nvim
neovim-ayu
nvim-cmp
tokyonight.nvim
lspkind.nvim
cmp-cmdline
cmp-nvim-lsp
cmp-nvim-lua
nvim-notify
cmp-buffer
lspsaga.nvim
nvim-autopairs
nvim-web-devicons
nvim-lspconfig
mason-lspconfig.nvim
lazy.nvim
skkeleton
none-ls.nvim
mason-null-ls.nvim
nvim-highlight-colors
noice.nvim
denops.vim
skkeleton_indicator.nvim
モチベーション
- (確か)継ぎ足しすぎてよくわからないことになっていた4年ぐらい前のvimrcを使っていたので現代的(?)なVim/Neovim環境が欲しくなった
- VimScriptは馴染めそうになかったこと
あたり
ディレクトリ構成
.config/nvim/
- lua/
- plugins/
- (lazy.nvimのspecファイル)
- keymaps.lua : 標準機能に当てるキーマップ一覧
- options.lua : 主にvim.opt(たまにvim.g)を弄ってる
- plugin_manager.lua : プラグインマネージャーのインストールとか設定とか
- plugins/
- init.lua : 上のファイルを呼び出してるだけ
各ファイルの中身とか
init.lua
本当に呼び出してるだけ local_settings_*は各環境別の設定に使えるけど必要な場面があまりない
options.lua
なぜかscriptencodingの設定が先頭にある なぜ
leaderキーは一番でかいspaceキーを設定している いつかkeymaps.luaに移植するかも
どこかで見掛けた標準プラグイン一律無効化コード 起動の高速化のために入れた(確か)
まあよくある設定 軽率にOSのクリップボードを叩きにいっててあまり行儀はよくないかも
keymaps.lua
エディタには見た目通り動いてほしいという感覚がある
c++やluaの整形はclang-formatとかstyluaとかに任せたいのでclangdとlualsのそれを無効化する感じの設定
各プラグインの設定や役割について
それぞれのプラグインについて
- 何をさせたくて入れたのか
- 何ができるのか
- どんな設定/キーマップをしたのか
あたりを列挙しておく
lazy.nvim
プラグインマネージャー 適当にやってほしいこと宣言する感じの辞書型渡すとかなりよしなにしてくれる
lua上で補完とかが効くプラグインマネージャー探してたら行き着いた
設定
(これに加えて入ってない時に自動で落としてくるようなコードがある)
- [spec] pluginsディレクトリ内に設定を宣言する辞書型を返すluaファイルを放り込めばインストールしてくれるようになる
- [checker] 起動時の更新チェック 結果表示はlualineにお任せ
- [git] 基本的にgithubにはsshで接続することにしてる なんでこうしたかは覚えてない
- [rocks] luarocks君 らしい これ使ってる人いるんですか...
- [defaults] 基本遅延読み込み 何のタイミングも宣言しなかったら読み込みすらしないようになる
neovim-ayu
暖色系?黄色系? 橙色のイメージが強いカラースキーム
ライトテーマが欲しくなった時にちょうど良さそうで入れた
普段は読み込まれてすらいないけどcモードあたりにフック掛けてもいいかもしれない
tokyonight.nvim
青基調で彩度少し抑えめのカラースキーム
エディタは青いのが好き
tokyonight-nightをメインのカラースキームとして使ってる
遅延起動はオフ
nvim-notify
noice.nvim
どちらもUI系 notifyは通知/メッセージを右上に、noiceはコマンド欄を中央に寄せるプラグイン
denops.nvimとかの通知が割と荒ぶりがちなのでいちいちカーソル動くの面倒なこともありnotifyは割と必須 一方でnoiceは(なんとなく入れたけど)わりと挙動不安定だから外してもいいかもしれない
遅延起動はVeryLazy ちゃんと動いてくれる
lualine.nvim
脈々と受け継がれるPowerlineの系譜のモードラインプラグイン
以前はairline→lightlineを使っていたけど現代のカラースキームだと対応してたりしていなかったりするのでこちらに移行
設定
あとステータスラインはエディタ内に一つもありゃ十分
左側は
- 外側がモード
- 中央が作業ブランチと解析結果等
- 内側がファイル名
右側は
- 内側がLazyのアップデートその他の数とファイルタイプ
- 中央がファイルエンコーディングと改行種別
- 外側がカーソル位置
となっている
改行種別はLinuxがUnixの代表みたいな面してるのが腑に落ちなかったので対応する改行マークを表示させることにした
開いてるバッファ一覧 タブバー形式だと見やすい...気がしたけどいらないかもしれない
遅延起動は無し
nvim-highlight-colors
色コードがあると対応する色を表示してくれる それだけ
たまに色が確認したくなるので
設定
あとカラーコードの横に対応するカラーの四角が表示されてたほうがかわいいのでそうした
遅延起動はVeryLazy 表示を見る段階で表示されてれば十分
gitsigns.nvim
リポジトリ上のファイルの編集状況とかを表示してくれる Diff操作とかもできるらしいけどあまり使ったことがない
いても不便はないのでいてもらうことにした
遅延起動はファイル読み込み時 ファイルになってないと編集状況も何もないので...
matchparen.nvim
(Neo)vim標準のmatchparenより幾分か早いらしい 正直matchparen自体あまり使ってないけど
nvim-treesitter
(Neo)vim標準のシンタックスハイライトよりリッチなシンタックスハイライトが出来る代物 らしい
いろんな場所で紹介されてるので入れてみた 確かにリッチな気がしないでもないけど...よくわからない
設定
自動インストールはnvim-notify読み込んでない状態で始まってメッセージがひどいことになりがちなので切った
遅延起動はなし あってもいい気はしないでもないけど
telescope.nvim
ファイルとかファイル以外とかを検索、表示できるプラグイン
旧環境で使ってたfzf-preview.vimからの移行先として入れた
smart-open.nvim
telescopeのファイル検索部分をある程度直感的にしてくれるプラグインらしい
どこかで見かけて入れたら使いやすかったので使ってる
設定
<leader> F(ind) (機能)
でキーバインドは統一してる smart-openは使う機会が多すぎるので<leader>
2連打
遅延起動はこれらキーバインドが打鍵された時
ToDo
UIの角を尖らせたい
oil.nvim
いわゆるファイルエクスプローラ バッファ編集でフォルダ/ファイルの操作ができてなかなか面白い 多分癖は強い
以前はツリー表示エクスプローラ系(NERDTreeとかnvim-treeとか fern.vimもそうだっけ?)を使っていたがあまり肌に合っていない感じがあったのとそう感じてる中でvim-jpでこれの存在を知ったことなどから導入した
設定
<leader>fd
で起動するようにしている(nvim-treeあたりをこのキーバインドで起動してた名残)
遅延起動はなし ターミナルでフォルダ開いた時に反応してもらうためだけど挙動不安定だから:Oil
あたりに引っかけるようにするかも