今回は、普段VSCodeを使っている人にとって
「え、これってNeovimでもできるの!?できないと思ってた。」
と感じる機能を紹介したいと思う。
注意点としては
- VimではなくNeovimである
- プラグイン(VSCodeの拡張機能みたいなもの)を入れることにより実現できるものも紹介
ディレクトリツリーを表示する
大抵Vimを使って作業するときは vim ファイル名で開くので気付かないが、
Neovim(Vim)には標準でファイラ機能が備わっているため、普通にディレクトリをツリー表示することができる。
以下はプラグインを使ってリッチに表示しているが、Vim標準でもディレクトリツリーの表示は可能である。
タブで開く・垂直分割で開く
:tab系のコマンドでタブを作成でき、 :vs系コマンドなどで左右分割できる。
筆者はやらないが水平分割も可能。
これはVim本来の機能にも標準で入っている。
全文検索・ファイル名検索
VSCodeの Command + p や Command + Shift + f相当の検索が可能。
これはプラグインを利用するのが圧倒的に快適である。
gitの変更を行単位で可視化
line numberの左側に「変更があった行」を可視化することができる。
これはプラグイン必須。
PRなどの差分を可視化
プラグイン必須だが、特定のコミット同士の差分を一覧で可視化することが可能。
構文解析
LSPの連携をすることで、編集中のファイルの構文解析が可能である。
構文解析が可能ということは、以下が実現できる。
- linterのエラーをリアルタイムで表示
- 行数の左側に目印を出しつつ、カーソルをフォーカスすると詳細メッセージが表示されることも可能
- 定義ジャンプ・参照(利用箇所)ジャンプ
- プログラミング言語に応じたシンタックスハイライト
-
import ...などの自動インポート - TSなどの型定義情報をポップアップで表示
- 使われていないコードの自動検出
これは標準機能だけでは不可能で、構文解析用のプラグインを入れる必要がある。
(VSCodeでも言語ごとの拡張機能を大抵入れていると思うが、それと同じ要領)
■linterエラー表示
■型定義をポップアップで表示
■参照箇所一覧検索
LogoSiteを利用している箇所を一覧表示し、そこにジャンプ可能。
コードの折りたたみ
画像ではオレンジの箇所のdivタグが折りたたまれて非表示になっている。
折りたたみ機能自体はVimに標準で組み込まれているが
「どこからどこまでを一つのブロックとみなすのか」は構文解析が必要になるため
実用性を考えると実質プラグイン必須と考えてよいだろう。
コード補完
コード補完も十分行うことができる。
- Vim標準機能の場合:構文解析なしで、同一ファイルのキーワードなどから候補を表示
- プラグインで構文解析をした場合:コードの構文を理解したうえで、利用可能な変数やプロパティ、関数などがサジェストされる
CopilotなどのAIコード補完
VSCodeでCopilotプラグインを入れると、Copilotが薄いグレーでコードの補完を行ってくれる。
一見Neovimではできなさそうだが、実はNeovimでも可能である。
NeovimへのGithub Copilot, Copilot Chat導入までの道のり - Qiita
デバッガー
IDE特有のリッチなデバッグ機能だが、Neovimでも実現可能である。
これはおそらく標準のVimでは構築するのは難しいかもしれない。(やったことない)
まとめ
NeovimはVimをより進化させたものであり、意外とVSCodeと変わらないくらいの機能を使うことができる。