Open12
AstroNvimをインストールする
や
を参考に。
- 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
インストールは、公式のドキュメントを読めばよい。
- まず既存の設定をバックアップに移しておく
-
~/.local
に入っているユーザ単位の設定やキャッシュもバックアップしておく
-
- テンプレートをgit経由で持ってくる
nvim
を実行するとAstroNvimが出てくれば成功。このままセットアップ。
たとえばLSPやLanguage Parser、Debuggerなどをインストールしていく。
このあたりはもっと腰を据えて、ひとつずつクリアする必要がありそう。
とりあえずPythonの開発環境を整えてみたい。
ためしにPython開発をひとつやりながら考えてみる。
- 該当リポジトリを開いたら.venvを読み込んでpyright?が動くようにはできている
- 編集モードから戻ったら半角英数字になるモードがあった気が
- まあKarabinerで設定しているからいいか
-
SPC, e
,SPC, f
で検索して任意のファイルを開くことはできた- VSCodeみたいにもっと直感的に開けないのかな
-
SPC, t, f
でフローティングのコンソールを開いてテストを実行などもできる - 関連するメソッドに飛んだりしたい
- hoverで見れるようにしたい
- LSPについてちゃんと知らないと、上記は適当に設定することになって使いこなせそう
- それもあまり気にする必要がない? https://docs.astronvim.com/mappings#lsp-mappings を読めば解決したりして
真面目に読んでみる。
まずバッファ
- そもそも「バッファを閉じる」って考え方すら馴染んでないなあ
- たとえばヘルプを読みたくて表示したときも、ひとつのバッファを開いているようだ
- すべてのテキストデータがバッファになる、とChatGPT。なるほど
- ウインドウを移動するのではなく、
]b
や>b
でバッファを移動・整理する -
Leader + bb
ですべてのバッファにキーワードをつけて、任意のバッファに飛べる -
Leader + bd
で任意のバッファを閉じる -
Leader + bc
でその他のバッファを閉じる。すべて閉じるならLeader + bC
- ソートもできるが、いったんパス
- 分割してバッファを開くこともできるみたいだけど、コマンドが反応しなかった
List Managementとは?
間違ってるかもしれないが、quickfixのためのバッファを開いたりできるみたい。
Pythonでも使えるのかな? 下記を入れてpythonでもquickfixが出るようにしないといけなそう。
あとでもう一度戻ってこよう。
Better Escape はよくわからなかった。あとまわし。
Completionはまだ使えてない。
Neo-Tree。ファイルツリー?を見れる。
Leader + o
で開いて、Leader + e
で閉じればよい。
Session Manager Mappings。
現時点の作業状況を保存できる。ファイルを保存するわけではない。
使っているときにエラーが出たけど、とりあえずLeader + Ss
でセッションを保存してLeader + Sf
でセッションを検索するとこまでやった。
Package Management Mappings。
lazyはプラグイン管理、MasonとはLSP/ツール管理の様子。
とくにMasonはLSP、Dap(デバッガ)、Formatter、Linterの管理ツール。
-
Leader + pm
でMason経由のインストールができる- これもバッファが開かれるので、普通に検索したりはできる。python関連のまだインストールしていないライブラリをたくさん見つけた
- どのライブラリを入れるかは慎重になったほうがいい?
いよいよLSP Mappings。
-
Learder li
でLSPの情報を見れる。いま開いているファイルに対して何がアタッチされているかなどがわかる。上手くいかなかったらまずここを見るのか -
Leader lI
でNone-ls(null-ls)の情報が見れる。null-lsってのはLSPじゃないツール(Blackとか)をLSPのように扱うために必要みたい。外部ツールの統合ツール -
K
でhoverできた! -
Leader + fS
で(Symbolの)アウトライン表示- これもバッファ
-
Leader ld
やgl
で行単位の分析。警告やエラーのある行で実行すると、内容がホバーされる-
Leader lD
でファイル全体の警告・エラーを見てジャンプできた
-
-
Leader la
でCode Actions。とは?- 修正してくれるアレか
-
Leader lA
で確認してみて、やれるときがきたら使ってみる
-
Leader lh
でSignature Help。とは?- 関数呼び出し引数内で実行すると、引数に関する情報がホバーされる
-
Leader lr
でリネーム -
Leader ls
でファイル内のシンボル一覧表示。任意の変数や関数を探してジャンプ-
Leader lG
でグローバルにシンボルを探す
-
まだもう半分ある
ひきつづき。
-
]d
で次のDiagnosticへ- いまさらだけどDiagnosticはいわゆる警告・エラーのことなんだろうな
-
]e
で次のError、]w
で次のWarning
-
]k
で次のブロック、]m
で次の関数 - 用語を整理
- Declaration: 宣言。変数や関数の宣言箇所
gD
- Type Definition: 型定義。型の定義場所
gy
- Implementation: 実装。関数の実装箇所
gd
- References: 参照。他で使われている箇所
grr
- Declaration: 宣言。変数や関数の宣言箇所
-
Leader + lR
やgrr
で参照箇所へ移動- このReferenceのバッファはquickfix
-
<C-w> w
でウインドウを切り替えれるので、Referenceのバッファを消したいときはこれでやる。もっといい操作がありそうだけど。 -
:copen
でもいける。ってことはquickfixなのかしら。 -
Leader xq
で移動可能