移行しようと思ってしたというより、なりゆきでそうなっただけではあるけど。
が、結論としてはもっと早く移行すりゃよかった!というくらいに、Neovimいいやん!ってなってる。
ことの経緯
`coc.nvim`やめるってよ
が、ある日。
手元のNode.jsのバージョンを最新のLTSにあげたら、Svelteのエクステンションである`coc-svelte`が動かなくなった。
どうやら既知のIssueらしく、リポジトリにもPRが立ってた。
が、1ヶ月以上も音沙汰ないし、そもそも半年以上もリポジトリに動きがない。
手元でフォークしたものを使うのもありか・・?他のは動いてるし・・?って思いつつも、やっぱり嫌な予感がするということで、 `coc.nvim`ごとやめることにした。
Astroのエクステンションがなかったりと、地味に不満はあったし。
`asyncomplete`と、なぜか補完されないJSX
`coc.nvim`からの移行先としては、`vim-lsp`と`asyncomplete`の定番セットを選んだ。
Plug 'prabirshrestha/vim-lsp' Plug 'mattn/vim-lsp-settings' Plug 'rhysd/vim-healthcheck' Plug 'prabirshrestha/asyncomplete.vim' Plug 'prabirshrestha/asyncomplete-lsp.vim' " ... let g:lsp_use_native_client = 1 let g:lsp_document_code_action_signs_enabled = 0 let g:lsp_diagnostics_float_cursor = 1 let g:lsp_diagnostics_virtual_text_enabled = 0 let g:lsp_diagnostics_highlights_enabled = 0 let g:lsp_inlay_hints_enabled = 1 let g:lsp_semantic_enabled = 1
見た目を整えるのが少し大変ではあったけど、他は問題なく移行できた。
SvelteのLSも最新のものが使えるようになったし、Astroまで対応してるし、やっぱ薄いものを組み合わせて使うのが好みやな〜これこれ〜って。
ただ1つ、問題を見つけてしまった。
それは、React/Preact/Solidなんでもいいけど、「JSXで補完がうまく効かない」というもの。
- 独自コンポーネントのProps
- HTML要素の属性
- `id`とか`class`とか
このあたりの補完が出ない。
- `lsp-hover`みたいなコマンドでは、型がちゃんと見れてる
- ので、LSP側の問題ではなさそう?
- ARIAまわりだけはなぜか補完されたり
というよくわからない状態で、たぶん`asyncomplete(-lsp)`の問題とは思うものの、他に悩んでる人がインターネットに見当たらず、自分の環境固有の問題かの判断もつかないまま、途方に暮れてた。
WeztermとVimのキーマップ問題
時を同じくして、年末やし新たなターミナルでも開拓するか!ってことで、Weztermを少し試してた。
- Kittyは日本語のIMEまわりに問題あり
- Alacrittyはシンプルすぎて、いまさら`tmux`導入したくないしな・・
というわけで、Weztermはどストライクだった。使ってる機能的にはiTerm2と差異はないけど、レンダリングまわりやUIがシュッとしてるのが好印象。
が、ここでもVimとのかみ合わせの問題があり・・・。
それは、`/`キーのマップが突然動かなくなるというもの。詳細は以下のGistに。
というところで、iTerm2に残留することにしてた。設定が`.plist`であること以外は特に不満はなかったし。
Hello, Neovim
という経緯から、この度Neovimmerになったので、改めて設定やプラグインの見直しをやってたのがこの年末。
https://github.com/leader22/dotfiles/blob/b7db1af7ab13b44b892ee85b070e374dd3025338/init.lua
これが今の設定のすべて。もともとファットに設定してたタイプではないので、200行くらいしかない。
(ならVSCodeでいいのでは?って言われそうやけど、それは違うんだな〜。プラグインをとっかえひっかえしたり、設定ファイルという盆栽をちまちま育てていく・・、これだからエディタいじりは楽しい!!っていう。)
しかもNeovimにしたら、Weztermとの相性問題もあっさり解決するという棚ぼた展開までついてきて、ほんとに移行してよかった。
以上、`coc-svelte`をなんとかしようとしてたら、気がついたらNeovimになってたという話でした。
2023年、もしVSCodeで`settings.json`をあれこれ書いてる人がいたら、ぜひこっちの沼に引き込みたい。
設定ファイルもコツコツ育てていこう🐣