AstroNvim (neovim)#

Neovimとは#

簡単に言えば、高機能なモダンデザインのVim
Linuxのディストリビューションに標準で入っているVimの派生
スリムでモダンな機能(UIや補完など)や拡張機能(gitやツリー表示)の管理など標準搭載!!

様々なエディター(VS code, etc…)があるなか、Vimは使いやすさや拡張性が低い

AstroNvimとは#

../../_images/astronvim_0.png

デザインや必要機能があらかじめ設定されているneovim
neovimを一から自分仕様に設定するのはしんどいって人向け
他にも種類はあるかも

環境#

  • OS: Linux(Rocky Linux), Ubuntuなども可

  • 作業フォルダ:筆者はAppというフォルダでappimage等を管理している

nerb-fontsのインストール#

AstroNvimはiconを使用するため,nerb-fontsに依存する
数GBほどあるため,cloneに時間がかかる

$ mkdir -p ~/App/neovim
$ cd ~/App/neovim
$ git clone --depth 1 https://github.com/ryanoasis/nerd-fonts.git
$ cd nerd-fonts
$ chmod u+x install.sh && ./install.sh

neovimのインストール#

neovimのリポジトリは neovim/neovim
appimageのダウンロード先はここ(GitHubの Releases から)

$ cd ~/App/neovim
$ wget https://github.com/neovim/neovim/releases/download/stable/nvim.appimage
$ chmod u+x ~/App/neovim/nvim.appimage

毎回,appimageを実行するのはめんどくさい
/usr/bin/ 内に nvim.appimage へのシンボリックリンクを作成し,どこからでも nvim で起動できるようにする

$ sudo ln -s ~/App/neovim/nvim.appimage /usr/bin/nvim

Neovim の実行

$ nvim
FUSEエラーが出た場合
../../_images/astronvim_1.jpg

libfuse2をインストールする

$ sudo apt install libfuse2

AstoroNvimのインストール#

  • 過去にNvimを使っていた場合

# Nvimの設定ファイルのバックアップ
$ mv ~/.config/nvim ~/.config/nvim.bak
$ mv ~/.local/share/nvim ~/.local/share/nvim.bak

AstroNvimの設定ファイルを読み込む

$ git clone --depth 1 https://github.com/AstroNvim/AstroNvim ~/.config/nvim

nvimの起動と初期セットアップ

$ nvim
$ nvim --version
NVIM v0.9.4
Build type: Release
LuaJIT 2.1.1692716794

   system vimrc file: "$VIM/sysinit.vim"
  fall-back for $VIM: "/__w/neovim/neovim/build/nvim.AppDir/usr/share/nvim"

Run :checkhealth for more info

使い方#

$ nvim .  # 現在いる階層でnvimを起動する.(vs codeの`code .`と同じ)

terminalなので基本的にキーボード操作 詳細はショートカットはAstroNvimのホームページを参照

  • 基本操作

    • space keyがLeader

    • space keyを一回押すとショートカット一覧表示

  • コマンドモード
    Escape -> コロン(:)でコマンドモードに

    • w で保存

    • q で終了

    • Tab でコマンド一覧

      • Mason

      • AstroUpdate …etc

補完プラグイン#

  • 検索ツール(高速なgrep) 標準で入っていないのでインストールする
    space key -> f -> wの順に押すことで, 特定の文字列を含むファイル を検索
    space key -> f -> fの順に押すことで, 特定の文字列がファイル名にあるファイル を検索

    $ sudo apt install ripgrep
    $ rg import test.py  # 単純にコマンドを使う場合はこう
    
  • Python用の言語サーバー導入

    $ sudo apt install python3-venv  # flake8, black, mypy で仮想環境が必要
    $ sudo apt install npm           # pyright で必要
    
    • nvimのコマンドモードで :MasonInstall pyright flake8 black mypy

  • clipboard Linuxの場合,xsel or xclip のインストールが必要

    • 使用するレジスタの選択

      • "* で選択範囲の自動コピー

      • "+ でいつもの

      • "0 でヤンク

    • コピーは Normal Modey

    • ペーストは Normal Modep

      $ sudo apt install xsel
      
  • C, C++用の言語サーバー導入

    • nvimのコマンドモードで :MasonInstall clangd

      # main.cpp コンパイル時の詳細表示(インクルードパスやエラーなど)
      $ ~/.local/share/nvim/mason/bin/clangd --check=/path/to/main.cpp
      
      # (Option) もし,標準ライブラリがないとエラーが出た場合,インストール
      $ sudo apt install libstdc++-12-dev  # セレクトされた GCC バージョンの標準ライブラリが入っていない場合
      

lint のプラグイン導入#

mason の仮想環境に直接入れないと認識しない^[4]

  • mypy

    • pydantic

      $ cd .local/share/nvim/mason/packages/mypy/
      $ source venv/bin/activate
      $ pip install pydantic
      

Troubleshooting#

lazy.nvim#

<img src="./img/astronvim_2.jpg class=“img-align1”>

解決方法

1.コマンドモードで Lazy を開く
../../_images/astronvim_3.jpg

2.‘U’ で indent-blankline.nvim をアップデートする
../../_images/astronvim_4.jpg

reference#

  1. https://www.reddit.com/r/neovim/comments/eecbck/nvimappimage/

  2. https://psipsina.jp/note/vim/neovim_clipboard.html

  3. https://clangd.llvm.org/guides/system-headers#fixing-missing-system-header-issues

  4. https://zenn.dev/h_wata/articles/4026a6af6dc671