エンジニアを目指す初学者に向けて、わかりやすく解説したブログです。

意外とNeovimでもできること

今回は、普段VSCodeを使っている人にとって
「え、これってNeovimでもできるの!?できないと思ってた。」
と感じる機能を紹介したいと思う。

注意点としては

  • VimではなくNeovimである
  • プラグイン(VSCodeの拡張機能みたいなもの)を入れることにより実現できるものも紹介

ディレクトリツリーを表示する

大抵Vimを使って作業するときは vim ファイル名で開くので気付かないが、
Neovim(Vim)には標準でファイラ機能が備わっているため、普通にディレクトリをツリー表示することができる。

以下はプラグインを使ってリッチに表示しているが、Vim標準でもディレクトリツリーの表示は可能である。

Image in a image block

タブで開く・垂直分割で開く

:tab系のコマンドでタブを作成でき、 :vs系コマンドなどで左右分割できる。

筆者はやらないが水平分割も可能。

これはVim本来の機能にも標準で入っている。

Image in a image block

全文検索・ファイル名検索

VSCodeの Command + pCommand + Shift + f相当の検索が可能。

これはプラグインを利用するのが圧倒的に快適である。

Image in a image block

gitの変更を行単位で可視化

line numberの左側に「変更があった行」を可視化することができる。

これはプラグイン必須。

Image in a image block

PRなどの差分を可視化

プラグイン必須だが、特定のコミット同士の差分を一覧で可視化することが可能。

Image in a image block

構文解析

LSPの連携をすることで、編集中のファイルの構文解析が可能である。

構文解析が可能ということは、以下が実現できる。

  • linterのエラーをリアルタイムで表示
    • 行数の左側に目印を出しつつ、カーソルをフォーカスすると詳細メッセージが表示されることも可能
  • 定義ジャンプ参照(利用箇所)ジャンプ
  • プログラミング言語に応じたシンタックスハイライト
  • import ...などの自動インポート
  • TSなどの型定義情報をポップアップで表示
  • 使われていないコードの自動検出

これは標準機能だけでは不可能で、構文解析用のプラグインを入れる必要がある。
(VSCodeでも言語ごとの拡張機能を大抵入れていると思うが、それと同じ要領)

■linterエラー表示

Image in a image block

■型定義をポップアップで表示

Image in a image block

■参照箇所一覧検索

LogoSiteを利用している箇所を一覧表示し、そこにジャンプ可能。

Image in a image block

コードの折りたたみ

画像ではオレンジの箇所のdivタグが折りたたまれて非表示になっている。

折りたたみ機能自体はVimに標準で組み込まれている
「どこからどこまでを一つのブロックとみなすのか」は構文解析が必要になるため
実用性を考えると実質プラグイン必須と考えてよいだろう。

Image in a image block

コード補完

コード補完も十分行うことができる。

  • Vim標準機能の場合:構文解析なしで、同一ファイルのキーワードなどから候補を表示
  • プラグインで構文解析をした場合:コードの構文を理解したうえで、利用可能な変数やプロパティ、関数などがサジェストされる
Image in a image block

CopilotなどのAIコード補完

VSCodeでCopilotプラグインを入れると、Copilotが薄いグレーでコードの補完を行ってくれる。

一見Neovimではできなさそうだが、実はNeovimでも可能である。

Icon in a page linkNeovimへのGithub Copilot, Copilot Chat導入までの道のり - Qiita

デバッガー

IDE特有のリッチなデバッグ機能だが、Neovimでも実現可能である。

これはおそらく標準のVimでは構築するのは難しいかもしれない。(やったことない)

Icon in a page linkNeovimでDAPを使ったデバッグ環境の構築と使い方

まとめ

NeovimはVimをより進化させたものであり、意外とVSCodeと変わらないくらいの機能を使うことができる。