Open11

neovimメモ

ピン留めされたアイテム
TimdaikTimdaik

今後のタスク

Neovimをとにかく使う

開発のときに使いこんで良さを解っていきたい。。

dotfilesをGitHubに上げる

晒すかどうかは迷う

git-bashとNvimのカラースキーマが衝突している説を検証

プラグインのカラースキーマをいろいろ試している時に、上手く設定できていないことが多々あった。
しかもライトテーマは顕著に醜くなっていた。。
→ windows-terminalでgit-bashにテーマを設定しちゃっているせいなのではないか??

プラグインを追加していく

とりま主要なものは設定したが、VScodeと比べるとまだまだ不便さを感じてしまうので、自分好みに改造していく

TimdaikTimdaik

lazy.nvim の導入

👇公式ドキュメント: ちゃんと見やすいのでこっちもちょいちょいチェックする。
https://lazy.folke.io/

日本語では以下の記事が細かく書いている
https://zenn.dev/siteyo/articles/980b6205e93914

使い方

https://eiji.page/blog/neovim-lazy-nvim-intro/
プラグインの名前をぶち込むだけでこれらプラグインが使えるようになる。
控えめに横転。

1つのファイルにまとめて書き込むことも出来るが、pluginsディレクトリを作成し、各ファイルにそれぞれプラグインを分割することが推奨されている。
プラグイン名とプラグインの設定をまとめて一緒に書くことができるため、基本的にはこちらに従ってよさそう。

  • 諸設定が細かく必要なプラグインは単独のファイルにまとめる
  • その他はカテゴリごとにまとめてファイルを作成する

これでプラグインを簡単に管理することが出来そう。

TimdaikTimdaik

インストールしたプラグインたち

各プラグインの補足

導入するかどうかは置いておいて、気になったプラグインの補足メモをここに書いていく。

mini.nvim

https://wagomu.me/blog/2024-07-12-vim-ekiden
UIや補完機能など様々な種類のプラグインをまとめたプラグイン。
デフォルトの設定があるため、こだわりがなく、とりあえずいろいろな機能を追加したいな~という時はこれを使ってみたら良いかも

Comment.nvim

https://github.com/numToStr/Comment.nvim
コメントアウトのトグルやらコメント作成やらが簡単になるプラグイン。
ぶっちゃけ絶対に使うので、必須級のプラグインだと思う。

TimdaikTimdaik

LSPについて

Language Server Protocolの略称。
各エディタ・IDEで各言語の拡張機能を作る際の負担を減らすためにMicrosoftが主導して作成された。
このLanguage Serverとエディタを同期したうえで、適宜リクエストを送ることで補完機能等を実現している。
詳しくは以下の記事を参照されたい。
https://zenn.dev/vim_jp/articles/40b2c348386f88

LSPを使って補完機能を導入する

https://zenn.dev/botamotch/articles/21073d78bc68bf
https://wagomu.me/blog/2023-05-17-vim-ekiden
https://zenn.dev/futsuuu/articles/3b74a8acec166e
これらを参考に設定する。

Lua入門

1つ目の記事を書いた人がこれより前に以下の記事を書いていた。
https://zenn.dev/botamotch/articles/4ef893e0d4cd40
自分もLuaなんて初めてなので、随時これをチェックする。
(名前はギリ知っているが、なんのこっちゃ。Pythonの親戚だったっけ?)

TimdaikTimdaik

基本操作

v: ヴィジュアルモード

ノーマルモードでvを押すとヴィジュアルモードになる。
再び押下するとノーマルモードとなり、vでモードをトグルできるようだ。
現在の行選択をされた状態になり、キー移動することで複数行の選択ができる。

この選択状態でそれぞれ以下の編集が可能。メチャ便利!

  • y: コピーする
  • d: 削除する
  • p: 貼り付けする
TimdaikTimdaik

Treesitter

https://github.com/nvim-treesitter/nvim-treesitter
パーサーであり、より詳細なシンタックスハイライトを設定できる。

設定方法

https://qiita.com/getty104/items/7a920a874d18ac6763e2
ここで言われているように、結論はInstallation · nvim-treesitter/nvim-treesitter Wikiの設定で行ける。

使用できる言語一覧

https://github.com/nvim-treesitter/nvim-treesitter?tab=readme-ov-file#supported-languages
READMEに実装されているもの、実装予定(?)の一覧がアルファベット順に並んでいるため、確認されたい。

Windowsの場合は注意

つまるところ、Cのコンパイラ群が必要。
案内通りにMingwをインストールしてきたらいいと思う。
https://github.com/nvim-treesitter/nvim-treesitter/wiki/Windows-support
https://qiita.com/kirinketsu/items/9939621816cfc813920b#4-ハイライト機能などを提供するnvim-treesitterの導入
https://konnyakmannan.com/archives/neovim_treesitter_setup_on_windows11/

しかも厄介なのが、どうやらTree-sitterのCLIもインストールする必要がありそうだということ。
自分の環境ではプラグインの設定だけでは動かなかったので、npm iでインストールした。

npm i -g tree-sitter-cli

組み合わせられる各種プラグイン

Treesitterはあくまでパーサーなので、組み合わせられるプラグインがたくさんある。

自動でタグを閉じてくれるnvim-ts-autotag

https://github.com/windwp/nvim-ts-autotag
React, HTMLを使っている時に欲しい機能。

Telescope

FuzzyFinderとやら。
ファイル検索が圧倒的に強化される必須プラグインの1つ。
https://github.com/nvim-telescope/telescope.nvim

ショーケース
https://github.com/nvim-telescope/telescope.nvim/wiki/Showcase

https://zenn.dev/catatsumuri/articles/68ed930f127234

TimdaikTimdaik

color scheme

それぞれREADMEにスクリーンショットがあるので、これらを見比べながら選ぶ。
ちなみに、tree-sitterのWikiに各テーマを設定した場合のソースのスクショがあるので、ここから選ぶのもオススメ。
https://github.com/nvim-treesitter/nvim-treesitter/wiki/Colorschemes

material

https://github.com/marko-cerovac/material.nvim
これも良かったけど、下のedgeを採用した。
READMEが良心的で、導入は楽ちんだった。

edge

https://github.com/sainnhe/edge
結局採用したのはこいつ。
基本的にtsxファイルとcファイルを見ながら好みのものを探した結果、これに落ち着いた。

だがはっきり言って、バリデーションのテーマ設定が面倒くさかった。
「READMEに書いといてよ...」となった。
以下のようにvimのグローバル変数が用意されているそうなので、vim.g.edge_style = "aura"などとした。
https://github.com/sainnhe/edge/blob/04b2e25fa08b81e071ad512bdec6e5af114b01b3/doc/edge.txt#L223-L232

他に気になったモノたち

TimdaikTimdaik

カラースキーマが正しく反映されていない件

結論

使用しているターミナルがtrue colorに対応しているかどうか。
おそらくgit-bashの使っているものは256色しか対応していない(この中でやりくりするので満足しても良いんだが...)
https://qiita.com/sff1019/items/3f73856b78d7fa2731c7#事前知識
https://qiita.com/mitsu-yuki/items/4d16f2efdb017cc1f996
https://www.pandanoir.info/entry/2019/11/02/202146
ターミナルにも詳しくなりたい...

TimdaikTimdaik

git bashに入ってるのでWSLに移行したいな