Open12

AstroNvimをインストールする

Akira KoboriAkira Kobori
  • Nerd FontsはPremol Console NFがあるので、準備不要そう
  • Neovimのバージョンはv0.9.5以上
  • 下記のライブラリをインストールしておくとよいらしい
    • ripgrep: イケてるgrep
    • lazygit: イケてるgit
    • go DiskUsage(): イケてるディスク使用量を計測ツール
      • 簡単には入れられなかった
    • bottom: イケてるプロセスモニタ
    • Python
    • Node
❯ nvim --version
NVIM v0.10.2
Build type: Release
LuaJIT 2.1.1727870382
Run "nvim -V1 -v" for more info
Akira KoboriAkira Kobori

インストールは、公式のドキュメントを読めばよい。

  • まず既存の設定をバックアップに移しておく
    • ~/.localに入っているユーザ単位の設定やキャッシュもバックアップしておく
  • テンプレートをgit経由で持ってくる
Akira KoboriAkira Kobori

nvimを実行するとAstroNvimが出てくれば成功。このままセットアップ。

たとえばLSPやLanguage Parser、Debuggerなどをインストールしていく。
このあたりはもっと腰を据えて、ひとつずつクリアする必要がありそう。
とりあえずPythonの開発環境を整えてみたい。

Akira KoboriAkira Kobori

ためしにPython開発をひとつやりながら考えてみる。

  • 該当リポジトリを開いたら.venvを読み込んでpyright?が動くようにはできている
  • 編集モードから戻ったら半角英数字になるモードがあった気が
    • まあKarabinerで設定しているからいいか
  • SPC, e, SPC, fで検索して任意のファイルを開くことはできた
    • VSCodeみたいにもっと直感的に開けないのかな
  • SPC, t, fでフローティングのコンソールを開いてテストを実行などもできる
  • 関連するメソッドに飛んだりしたい
  • hoverで見れるようにしたい
  • LSPについてちゃんと知らないと、上記は適当に設定することになって使いこなせそう
Akira KoboriAkira Kobori

真面目に読んでみる。

https://docs.astronvim.com/mappings#lsp-mappings

まずバッファ

  • そもそも「バッファを閉じる」って考え方すら馴染んでないなあ
    • たとえばヘルプを読みたくて表示したときも、ひとつのバッファを開いているようだ
    • すべてのテキストデータがバッファになる、とChatGPT。なるほど
  • ウインドウを移動するのではなく、]b>bでバッファを移動・整理する
  • Leader + bbですべてのバッファにキーワードをつけて、任意のバッファに飛べる
  • Leader + bdで任意のバッファを閉じる
  • Leader + bcでその他のバッファを閉じる。すべて閉じるならLeader + bC
  • ソートもできるが、いったんパス
  • 分割してバッファを開くこともできるみたいだけど、コマンドが反応しなかった
Akira KoboriAkira Kobori

Better Escape はよくわからなかった。あとまわし。
Completionはまだ使えてない。

Neo-Tree。ファイルツリー?を見れる。
Leader + oで開いて、Leader + eで閉じればよい。

Akira KoboriAkira Kobori

Session Manager Mappings。
現時点の作業状況を保存できる。ファイルを保存するわけではない。

使っているときにエラーが出たけど、とりあえずLeader + Ssでセッションを保存してLeader + Sfでセッションを検索するとこまでやった。

Akira KoboriAkira Kobori

Package Management Mappings。
lazyはプラグイン管理、MasonとはLSP/ツール管理の様子。
とくにMasonはLSP、Dap(デバッガ)、Formatter、Linterの管理ツール。

  • Leader + pmでMason経由のインストールができる
    • これもバッファが開かれるので、普通に検索したりはできる。python関連のまだインストールしていないライブラリをたくさん見つけた
  • どのライブラリを入れるかは慎重になったほうがいい?
Akira KoboriAkira Kobori

いよいよLSP Mappings。

  • Learder liでLSPの情報を見れる。いま開いているファイルに対して何がアタッチされているかなどがわかる。上手くいかなかったらまずここを見るのか
  • Leader lIでNone-ls(null-ls)の情報が見れる。null-lsってのはLSPじゃないツール(Blackとか)をLSPのように扱うために必要みたい。外部ツールの統合ツール
  • Kでhoverできた!
  • Leader + fSで(Symbolの)アウトライン表示
    • これもバッファ
  • Leader ldglで行単位の分析。警告やエラーのある行で実行すると、内容がホバーされる
    • Leader lDでファイル全体の警告・エラーを見てジャンプできた
  • Leader laでCode Actions。とは?
    • 修正してくれるアレか
    • Leader lAで確認してみて、やれるときがきたら使ってみる
  • Leader lhでSignature Help。とは?
    • 関数呼び出し引数内で実行すると、引数に関する情報がホバーされる
  • Leader lrでリネーム
  • Leader lsでファイル内のシンボル一覧表示。任意の変数や関数を探してジャンプ
    • Leader lGでグローバルにシンボルを探す

まだもう半分ある

Akira KoboriAkira Kobori

ひきつづき。

  • ]dで次のDiagnosticへ
    • いまさらだけどDiagnosticはいわゆる警告・エラーのことなんだろうな
    • ]eで次のError、]wで次のWarning
  • ]kで次のブロック、]mで次の関数
  • 用語を整理
    • Declaration: 宣言。変数や関数の宣言箇所 gD
    • Type Definition: 型定義。型の定義場所 gy
    • Implementation: 実装。関数の実装箇所 gd
    • References: 参照。他で使われている箇所 grr
  • Leader + lRgrrで参照箇所へ移動
    • このReferenceのバッファはquickfix
    • <C-w> wでウインドウを切り替えれるので、Referenceのバッファを消したいときはこれでやる。もっといい操作がありそうだけど。
    • :copenでもいける。ってことはquickfixなのかしら。
    • Leader xqで移動可能