Open19

(多分)Neovimの設定に関して

Osmium_1008Osmium_1008
  • どんな設定をした/しようとしてるか
  • Neovimについて何を知っているか

あたりが割と頭から抜けがちなので備忘録を残す それとToDoとか書く

Osmium_1008Osmium_1008

Neovimのバージョン(現在)

nvim -V1 -v

NVIM v0.10.1
Build type: Release
LuaJIT 2.1.1720049189

HomeBrewのformula上に上がってる最新バージョンが入ってる(はず...)

Osmium_1008Osmium_1008

設定ファイル(最新)

https://github.com/Osmium1008/dotfiles/tree/master/config/nvim

コミット履歴がかなりカオスなことになってる...

導入済みプラグイン一覧(現在)

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

Osmium_1008Osmium_1008

モチベーション

  • (確か)継ぎ足しすぎてよくわからないことになっていた4年ぐらい前のvimrcを使っていたので現代的(?)なVim/Neovim環境が欲しくなった
  • VimScriptは馴染めそうになかったこと

あたり

Osmium_1008Osmium_1008

ディレクトリ構成

.config/nvim/

  • lua/
    • plugins/
      • (lazy.nvimのspecファイル)
    • keymaps.lua : 標準機能に当てるキーマップ一覧
    • options.lua : 主にvim.opt(たまにvim.g)を弄ってる
    • plugin_manager.lua : プラグインマネージャーのインストールとか設定とか
  • init.lua : 上のファイルを呼び出してるだけ
Osmium_1008Osmium_1008

各ファイルの中身とか

init.lua

https://github.com/Osmium1008/dotfiles/blob/ce3a557d3a85d8dcd1474554ef6f661a65a09cee/config/nvim/init.lua#L1-L5
本当に呼び出してるだけ local_settings_*は各環境別の設定に使えるけど必要な場面があまりない

options.lua

https://github.com/Osmium1008/dotfiles/blob/ce3a557d3a85d8dcd1474554ef6f661a65a09cee/config/nvim/lua/options.lua#L1
なぜかscriptencodingの設定が先頭にある なぜ

https://github.com/Osmium1008/dotfiles/blob/ce3a557d3a85d8dcd1474554ef6f661a65a09cee/config/nvim/lua/options.lua#L2
leaderキーは一番でかいspaceキーを設定している いつかkeymaps.luaに移植するかも

https://github.com/Osmium1008/dotfiles/blob/ce3a557d3a85d8dcd1474554ef6f661a65a09cee/config/nvim/lua/options.lua#L3-L16
どこかで見掛けた標準プラグイン一律無効化コード 起動の高速化のために入れた(確か)

https://github.com/Osmium1008/dotfiles/blob/ce3a557d3a85d8dcd1474554ef6f661a65a09cee/config/nvim/lua/options.lua#L17-L41
まあよくある設定 軽率にOSのクリップボードを叩きにいっててあまり行儀はよくないかも

keymaps.lua

https://github.com/Osmium1008/dotfiles/blob/ce3a557d3a85d8dcd1474554ef6f661a65a09cee/config/nvim/lua/keymaps.lua#L1-L7
エディタには見た目通り動いてほしいという感覚がある

https://github.com/Osmium1008/dotfiles/blob/ce3a557d3a85d8dcd1474554ef6f661a65a09cee/config/nvim/lua/keymaps.lua#L19-L27
c++やluaの整形はclang-formatとかstyluaとかに任せたいのでclangdとlualsのそれを無効化する感じの設定

Osmium_1008Osmium_1008

各プラグインの設定や役割について

それぞれのプラグインについて

  • 何をさせたくて入れたのか
  • 何ができるのか
  • どんな設定/キーマップをしたのか

あたりを列挙しておく

Osmium_1008Osmium_1008

lazy.nvim

プラグインマネージャー 適当にやってほしいこと宣言する感じの辞書型渡すとかなりよしなにしてくれる
lua上で補完とかが効くプラグインマネージャー探してたら行き着いた

設定

https://github.com/Osmium1008/dotfiles/blob/ce3a557d3a85d8dcd1474554ef6f661a65a09cee/config/nvim/lua/plugin_manager.lua#L20-L37
(これに加えて入ってない時に自動で落としてくるようなコードがある)

  • [spec] pluginsディレクトリ内に設定を宣言する辞書型を返すluaファイルを放り込めばインストールしてくれるようになる
  • [checker] 起動時の更新チェック 結果表示はlualineにお任せ
  • [git] 基本的にgithubにはsshで接続することにしてる なんでこうしたかは覚えてない
  • [rocks] luarocks君 らしい これ使ってる人いるんですか...
  • [defaults] 基本遅延読み込み 何のタイミングも宣言しなかったら読み込みすらしないようになる
Osmium_1008Osmium_1008

neovim-ayu

暖色系?黄色系? 橙色のイメージが強いカラースキーム

ライトテーマが欲しくなった時にちょうど良さそうで入れた
普段は読み込まれてすらいないけどcモードあたりにフック掛けてもいいかもしれない

Osmium_1008Osmium_1008

tokyonight.nvim

青基調で彩度少し抑えめのカラースキーム

エディタは青いのが好き
tokyonight-nightをメインのカラースキームとして使ってる

遅延起動はオフ

Osmium_1008Osmium_1008

nvim-notify

noice.nvim

どちらもUI系 notifyは通知/メッセージを右上に、noiceはコマンド欄を中央に寄せるプラグイン

denops.nvimとかの通知が割と荒ぶりがちなのでいちいちカーソル動くの面倒なこともありnotifyは割と必須 一方でnoiceは(なんとなく入れたけど)わりと挙動不安定だから外してもいいかもしれない

遅延起動はVeryLazy ちゃんと動いてくれる

Osmium_1008Osmium_1008

lualine.nvim

脈々と受け継がれるPowerlineの系譜のモードラインプラグイン

以前はairline→lightlineを使っていたけど現代のカラースキームだと対応してたりしていなかったりするのでこちらに移行

設定

https://github.com/Osmium1008/dotfiles/blob/ce3a557d3a85d8dcd1474554ef6f661a65a09cee/config/nvim/lua/plugins/lualine.lua#L11-L14
コンポーネント同士まで記号で隔てられているとさすがに鬱陶しいので設定で表示を消している
あとステータスラインはエディタ内に一つもありゃ十分

https://github.com/Osmium1008/dotfiles/blob/ce3a557d3a85d8dcd1474554ef6f661a65a09cee/config/nvim/lua/plugins/lualine.lua#L15-L35
左側は

  • 外側がモード
  • 中央が作業ブランチと解析結果等
  • 内側がファイル名

右側は

  • 内側がLazyのアップデートその他の数とファイルタイプ
  • 中央がファイルエンコーディングと改行種別
  • 外側がカーソル位置

となっている
改行種別はLinuxがUnixの代表みたいな面してるのが腑に落ちなかったので対応する改行マークを表示させることにした

https://github.com/Osmium1008/dotfiles/blob/ce3a557d3a85d8dcd1474554ef6f661a65a09cee/config/nvim/lua/plugins/lualine.lua#L36-L54
開いてるバッファ一覧 タブバー形式だと見やすい...気がしたけどいらないかもしれない

遅延起動は無し

Osmium_1008Osmium_1008

nvim-highlight-colors

色コードがあると対応する色を表示してくれる それだけ
たまに色が確認したくなるので

設定

https://github.com/Osmium1008/dotfiles/blob/ce3a557d3a85d8dcd1474554ef6f661a65a09cee/config/nvim/lua/plugins/highlight_colors.lua#L7-L9
3ケタ16進はgitのコミット履歴とか表示した時に結構誤爆するので消した
あとカラーコードの横に対応するカラーの四角が表示されてたほうがかわいいのでそうした

遅延起動はVeryLazy 表示を見る段階で表示されてれば十分

Osmium_1008Osmium_1008

gitsigns.nvim

リポジトリ上のファイルの編集状況とかを表示してくれる Diff操作とかもできるらしいけどあまり使ったことがない
いても不便はないのでいてもらうことにした

遅延起動はファイル読み込み時 ファイルになってないと編集状況も何もないので...

Osmium_1008Osmium_1008

matchparen.nvim

(Neo)vim標準のmatchparenより幾分か早いらしい 正直matchparen自体あまり使ってないけど

Osmium_1008Osmium_1008

nvim-treesitter

(Neo)vim標準のシンタックスハイライトよりリッチなシンタックスハイライトが出来る代物 らしい
いろんな場所で紹介されてるので入れてみた 確かにリッチな気がしないでもないけど...よくわからない

設定

https://github.com/Osmium1008/dotfiles/blob/ce3a557d3a85d8dcd1474554ef6f661a65a09cee/config/nvim/lua/plugins/treesitter.lua#L7
なんかある なんのために入れたんだっけ 古い設定の名残り?
https://github.com/Osmium1008/dotfiles/blob/ce3a557d3a85d8dcd1474554ef6f661a65a09cee/config/nvim/lua/plugins/treesitter.lua#L8
nvim-treesitter.configs.setupを呼んでね というお願い これを置いておかないとoptsを読み込んでくれない
https://github.com/Osmium1008/dotfiles/blob/ce3a557d3a85d8dcd1474554ef6f661a65a09cee/config/nvim/lua/plugins/treesitter.lua#L9-L39
読み込んでほしい言語一覧とその他設定
自動インストールはnvim-notify読み込んでない状態で始まってメッセージがひどいことになりがちなので切った

遅延起動はなし あってもいい気はしないでもないけど

Osmium_1008Osmium_1008

telescope.nvim

ファイルとかファイル以外とかを検索、表示できるプラグイン
旧環境で使ってたfzf-preview.vimからの移行先として入れた

smart-open.nvim

telescopeのファイル検索部分をある程度直感的にしてくれるプラグインらしい
どこかで見かけて入れたら使いやすかったので使ってる

設定

https://github.com/Osmium1008/dotfiles/blob/ce3a557d3a85d8dcd1474554ef6f661a65a09cee/config/nvim/lua/plugins/telescope.lua#L22-L63
<leader> F(ind) (機能)でキーバインドは統一してる smart-openは使う機会が多すぎるので<leader>2連打
遅延起動はこれらキーバインドが打鍵された時

ToDo

UIの角を尖らせたい

Osmium_1008Osmium_1008

oil.nvim

いわゆるファイルエクスプローラ バッファ編集でフォルダ/ファイルの操作ができてなかなか面白い 多分癖は強い
以前はツリー表示エクスプローラ系(NERDTreeとかnvim-treeとか fern.vimもそうだっけ?)を使っていたがあまり肌に合っていない感じがあったのとそう感じてる中でvim-jpでこれの存在を知ったことなどから導入した

設定

https://github.com/Osmium1008/dotfiles/blob/ce3a557d3a85d8dcd1474554ef6f661a65a09cee/config/nvim/lua/plugins/oil.lua#L11-L17
ひたすら見た目を整形しまくってる 隠しファイルは基本的に全表示するスタイル
https://github.com/Osmium1008/dotfiles/blob/ce3a557d3a85d8dcd1474554ef6f661a65a09cee/config/nvim/lua/plugins/oil.lua#L20-L31
<leader>fdで起動するようにしている(nvim-treeあたりをこのキーバインドで起動してた名残)

遅延起動はなし ターミナルでフォルダ開いた時に反応してもらうためだけど挙動不安定だから:Oilあたりに引っかけるようにするかも