Closed23

NeovimをIDEとして使ってみたい

kapurekakapureka

手始めにGithubにてNeovim ideと検索

star数の順に並べるとこんな感じだった。

kapurekakapureka

選択肢は、以下の四つにする。

  • SpaceVim
  • NvChad
  • LunarVim
  • AstroNvim

star数の推移を見てみたい。

kapurekakapureka

歴史的には、以下の通り

  • SpaceVim(2017)
  • LunarVim(2020)
  • NvChad(2021)
  • AstroNvim(2022)

グラフを見る感じ、後発組は勢いがすごくて特にNvChadはLunarVimを追い越してるし勢いを感じますね。こういうのはだいたい一番後発のものが改善されていて良い気もするが一旦、それぞれのウリとなる特徴を知りたい。

kapurekakapureka

SpaceVim

Features:(以下、deepl翻訳)

  • モジュール化:プラグインや機能を階層的に整理しています。
  • 互換性のあるAPI:Vim/Neovimのための一連の互換性のあるAPIです。
  • 優れたドキュメント:オンラインドキュメントと :h SpaceVim.
  • より良いエクスペリエンス:コアプラグインをluaで書き換える。
  • 美しいUI:素晴らしいUIとその便利な機能を気に入っていただけると思います。
  • ニーモニックキーバインド:キーバインドガイドが自動的に表示されます。
  • 起動時間が速い:dein.vimで90%のプラグインを遅延ロードする
  • RSIのリスクを下げる:モディファイアの代わりにスペースバーを多用することで。
  • 一貫した体験:ターミナルとGUI間で一貫した体験ができる。

最新バージョン:2.0 (2022/7/2)

vimで使われていたので、そのままneovimでも使えるという感じなのかな。
今のところは可もなく不可もなくという印象。

kapurekakapureka

LunarVim

Features

オピニオン系
LunarVim は、標準的なデフォルト設定で出荷され、その上に構築することができます。オートコンプリート、統合ターミナル、ファイルエクスプローラ、ファジーファインダー、LSP、リンティング、フォーマット、デバッグなどの機能を備えています。

エクステンシブル
LunarVimに意見があるからといって、それを共有する必要はありません。内蔵プラグインは、config.lua ファイルでオン/オフを切り替えることができます。このファイルには、独自のプラグイン、キーマップ、オートコマンド、リーダーバインディング、その他すべてのカスタム設定を追加することができます。

速い
LunarVimは、可能な限りプラグインを遅延ロードして、速度を最大化します。無効化されたプラグインも、プラグインリストがアクティブなプラグインだけでコンパイルされるため、速度が低下することはありません。この戦略により、LunarVimは機能と速度の間で選択をする必要がありません。

最新バージョン:1.2.0 (2022/12/5)

公式サイトはSpaceVimと比べると良い。ドキュメントもしっかり用意してあって使いやすそうではある。

kapurekakapureka

NvChad

NvChadは、非常に美しいUIと高速な起動時間(約0.02秒〜0.07秒)を持つ基本設定を提供することを目的として、luaで書かれたneovim設定です。Telescope、nvim-tree、bufferlineなどのUIプラグインをうまく調整し、美しいUI体験を提供します。

レイジーローディングは、プラグインがデフォルトではロードされず、特定のコマンドやイベントなど、必要なときにだけロードされることを意味します(93%)。これにより起動時間が短縮され、古いPentiumマシン1.4ghz + 4gb ram & HDDでテストしたところ、0.07~秒でした。

NvChadはフレームワークではありません!NvChadは「ベース」コンフィグとして使用されることを想定しており、ユーザーはデフォルトのコンフィグをうまく調整することができ、またデフォルトのコンフィグで気に入らないものを削除してその上に自分のコンフィグを構築することができます。ユーザーは、自分のカスタムコンフィグ(lua/customディレクトリ)にいながら、デフォルトコンフィグ全体を調整することができます。このディレクトリはユーザーのコンフィグのコントロールセンターであり、gitignoredされているので、ユーザーはNvChadの最新コンフィグ(main branch)をアップデートしながら、chadrc(カスタムディレクトリ全体をコントロールするファイル)でコントロールすることができます。

  • デフォルトで高速
    プラグインは可能な限り遅延ロードされ、モジュールは必要なときだけロードされるため、起動時間は非常に高速です。
  • 美しいUI
    NvChadはCLIを採用しながらも美しいUIを提供し、UIプラグインは視覚的にエレガントなテーマで構成されています。
  • 高いカスタマイズ性
    デフォルトのプラグイン、UI、設定は、chadrcファイルによって簡単に無効化または上書きすることができます。
  • アップデート機構
    gitによるアップデート機構により、ユーザーの設定を保持したまま、最新の変更に対応できる。
  • Lua搭載
    設定はLuaで書かれており、Neovimのlua apiやluaプラグインとうまく統合されています。
  • 一番きれいなテーマ
    57種類の組み込みテーマとカスタムテーマが用意されています!すべてのテーマカラーは、ユーザー設定によりオーバーライド可能です。
  • ライトウェイト
    構成は約1.3k LOCで、その60%はプラグインの設定とマッピングだけです。コードベースはできるだけシンプルに保つように心がけています。
  • 内蔵UIプラグイン
    NvChadは、独自のテーマプラグインと、ステータスライン、バッファライン、ダッシュボードなどのUIモジュールを独自のUIプラグインで管理します。
  • 使いやすさ
    NvChadは、シンプルにするためのカスタム設定と、そのためのオートコンプリートを提供します。あなたがすることは、テーブルをオーバーライドするだけです!

最新バージョン:2.0 (2023/3/15)

テーマが豊富でなんか良さそう。勢いを感じた。

kapurekakapureka

AstroNvim

特徴
Neo-treeを使ったファイルエクスプローラー
Cmpによるオートコンプリート
GitsignsによるGitの統合
ステータスライン、ウィンバー、バッファーラインにヒアラインを採用
トグルタイム付き端子
望遠鏡を使ったファジーファインダー
Treesitterによるシンタックスハイライト
Null-lsを使ったフォーマットとLinting
ネイティブLSPによる言語サーバプロトコル
nvim-dapでアダプタプロトコルをデバッグする。

最新バージョン:3.5.3 (2023/3/28)

勢いは感じるけど、何がすごいのかあんまり分からなかった。

kapurekakapureka

QiitaやZennにはあんまり情報が載っていないので海外のサイトやサービスで評価をざっくり調べる。

kapurekakapureka

どうやら、初心者はLazyvimがおすすめらしいのでLazyvimに入門します。

ここからは、Lazyvimのインストール方法や使い方をまとめていきたい。

kapurekakapureka

ちなみに、macのterminalではtrue colorが使えないとかという理由でiterm2やら他のものが使われることがほとんどでNerd Fontを設定しておくのが基本みたい。インストールのところに導入方法載せてくれていないから少し不親切かも・・・?

kapurekakapureka

Macでフォントを導入する方法

  1. フォントをダウンロードする(zipとかで公開されてることが多いので解凍しとく)
  2. font book.appを開いて以下のように追加して先ほどのファイルを選択する。
  3. iterm2とかの設定でfontを選択する

kapurekakapureka

以下は、先ほど紹介してmedium記事のLazyvimの部分をgoogle翻訳したもの

Lazyvim: Neovim の最小限の構成

Neovim は強力で柔軟なテキスト エディターであり、近年開発者やパワー ユーザーの間で人気を博しています。その人気の理由の 1 つは、ユーザーがニーズに合わせてカスタマイズおよび構成できる拡張性です。ただし、Neovim の構成は初心者にとって困難な作業になる可能性があり、多くのユーザーは実際に環境を使用するよりも、環境の微調整とカスタマイズに多くの時間を費やしていることに気付きます。これがLazyvimの出番です。これは、シンプルで軽量な編集環境を提供することを目的とした、Neovim の最小限の構成です。

Lazyvimの特徴

  • 最小限の構成: Lazyvimには最小限のプラグインと構成のセットが付属しており、ユーザーが多すぎるオプションで圧倒されることなく編集エクスペリエンスを向上させることを目的としています。これにより、初心者は構成の複雑さに戸惑うことなく、簡単にNeovimを使い始めることができます
  • 簡単な取り付け: 取り付けは簡​​単で簡単です。ユーザーは、リポジトリを複製してインストール スクリプトを実行するだけで、構成がセットアップされ、必要なプラグインがインストールされます。
  • プラグイン マネージャー: lazy.nvimプラグイン マネージャーが付属しており、プラグインのインストール、更新、および管理が簡単になります。ユーザーは、構成ファイルにプラグインを追加してインストール コマンドを実行するだけで、環境に新しいプラグインを追加できます。
  • 改善されたナビゲーション: Lazyvimには一連のナビゲーション プラグインが付属しており、エディター内を簡単に移動できます。EasyMotion プラグインを使用すると、ユーザーは一連のキー バインドを使用してドキュメントの任意の部分にすばやく移動できます。一方、FZF プラグインは、ファイル、バッファー、またはコード行をすばやく見つけるために使用できる強力なあいまい検索ツールを提供します。
  • 構文の強調表示: さまざまなプログラミング言語に色付きの強調表示を提供する一連の構文強調表示プラグインが付属しています。これにより、コードが読みやすく理解しやすくなり、構文エラーやその他の問題を特定するのに役立ちます。

Lazyvim を使用することの長所と短所

長所:

  • 軽量: システム リソースをあまり消費しない軽量構成です。これにより、高速で応答性の高い編集環境を求めるユーザーにとって理想的です。
  • 使いやすい: 使いやすく設定しやすいように設計されているため、 Neovimを初めて使用する初心者に最適です。
  • ミニマリスト: プラグインと構成の最小限のセットが付属しており、編集環境での混乱や気を散らすものを減らすのに役立ちます.

短所:

  • 制限された機能: Lazyvimのミニマリスト アプローチは、一部のユーザーが探しているすべての機能を備えていない可能性があることを意味します。より高度な機能やカスタマイズ オプションが必要なユーザーは、より包括的な構成を探す必要がある場合があります。
  • 急な学習曲線: Lazyvim は使いやすいように設計されていますが、それでもNeovimとその構成システムに関するある程度の知識が必要です。初心者は、 Lazyvimの機能を十分に活用する前に、基本を学ぶのに時間がかかる場合があります。

Lazyvimへの想い

Lazyvim は、シンプルで軽量な編集環境を提供するNeovimの最小限の構成です。インストールと構成が簡単で、 Neovimを初めて使用する初心者に最適です。ただし、その最小限のアプローチは、一部のユーザーが探しているすべての機能を備えていない可能性があることを意味します. それにもかかわらず、あまりにも多くのオプションに圧倒されることなく、高速で反応の良い編集環境が必要な人にとっては素晴らしい選択です.

kapurekakapureka

自分なりのまとめ

Lazyvimは軽量で必要最低限の便利な機能を詰め合わせたものという印象。インストールと設定の変更が容易なので初心者におすすめ。ただ、Neovim完全初心者は慣れが必要なので気をつけてねという感じ。実際の使い方は動画も出してくれているので、動画を見ながら主な使い方についてまとめていきたい。

kapurekakapureka

fdとは

https://github.com/sharkdp/fd

「find」に代わる、シンプルで迅速、そしてユーザーフレンドリーな方法です。とのこと

brew install fd

こちらもbrewでインストール可能

kapurekakapureka

brew list

  • lazygit
  • ripgrep
  • fd

が入ってることを確認できたので次へ

kapurekakapureka

結論

LazyVimを使っても一つ一つプラグインの使い方を知っていないと使い切ることができないので、一からNeovimで一つ一つの使い方を学びながら入れた方が近道だと思った。ただ、そうなるとプラグインの良し悪しを比べたりとか時間がかかってしまうので、現状はvscodeでvimを使えるようにするだけで良いかなという印象。私にはまだ早かったみたい。時間がある時に少しずつNeovimについて学んでいくことにしたい。

Neovimの記法を知らないから問題なのかプラグインを知らないから動かないのか?ここら辺が曖昧になってしまうため、Neovimの基本から学んだ方がよさそう。Railsの時もそうだったけど、Rubyの言語仕様でできることをRailsで無理に実現しようとすると変な感じになったりする時があったから、それと同じかな。

このスクラップは2023/03/30にクローズされました