概要
nvim-kickstartのコードを読む。機能のレファレンスを作るのが目標。
kickstartとは何か?(Geminiの和訳)
Kickstart.nvimは「配布版(ディストリビューション)」ではありません。
Kickstart.nvimは、あなた自身の設定を作るための出発点です。 その目的は、コードを上から下まで一行ずつ読み、自分の設定が何をしているのかを理解し、ニーズに合わせて修正できるようにすることにあります。一度それができれば、自分専用のNeovimにするために、自由に探索・設定・いじくり回すことができます! しばらくはKickstartをそのまま使い続けるのも、すぐにモジュールごとに分割して整理し直すのも、すべてはあなた次第です。
Luaについて全く知らない場合は、ガイドを読むために少し時間を割くことをお勧めします。例えば、10〜15分程度で読めるこちらのガイドがあります
Luaを少し理解した後は、NeovimがどのようにLuaを統合しているかのリファレンスとして :help lua-guide を活用してください。
:help lua-guide HTML版
Kickstart ガイド
TODO: まず最初にすべきことは、Neovimで :Tutor コマンドを実行することです。
それが完了したら、この init.lua(Kickstartの設定ファイル)の残りの部分を読み進めながら作業を続けてください。
次に、:help を実行して、その内容を読んでください。 これにより、組み込みのヘルプドキュメントの読み方、移動方法、検索方法に関する基本情報が含まれたヘルプウィンドウが開きます。
何かに行き詰まったり混乱したりしたときは、まずここを確認するようにしてください。これはNeovimの素晴らしい機能の一つです。
特に重要な点として、Kickstartでは <Space>sh というキーマップを用意しています。これはヘルプドキュメントを「search(検索)」するためのもので、何を探せばいいか正確にわからない時に非常に便利です。
この init.lua の至る所に :help X というコメントを残しています。 これらは、Kickstartで使用されている関連設定、プラグイン、またはNeovimの機能について、より詳細な情報がどこにあるかを示すヒントです。
感想
luaガイドを読まずに進めてみる。
設定
<space>をリーダーキーに設定。詳しくは:help mapleadarを見るべし。とりあえずよさそう。
|
|
nerdフォントを有効化
|
|
相対行と絶対行をどちらも表示。
|
|
ノーマルモード、ビジュアルモード、挿入モード、コマンドラインモードの全てでマウスを有効にする。
|
|
現在どのモードにいるかを表示しない。ステータスラインのプラグインがあるので不要
|
|
折り返しの行の開始位置をもとの行のインデントに合わせる。単語の途中で行を折り返さない。
|
|
neovimを閉じた後でもundoを可能にする。
|
|
検索時に大文字と小文字を区別しないようにする。
|
|
LSPの診断結果などを表示できるようにする。
|
|
画面更新を行う時間を250秒にする
|
|
複数のキーを組み合わせて使う操作(マッピング)を入力するときの待ち時間を短くする。
|
|
新しい画面を開くときに「右」と「下」に開く。
|
|
タブ文字を>>とその後の空白で表す。行末の不必要な空白を·で表す。改行を許可しない特殊な空白(Non-breaking space)を ␣で表す。
|
|
置換時に
リアルタイム・ハイライト: 書き換える対象の文字(old)が、入力した瞬間に画面上でハイライトされる。
ライブ・プレビュー: 置換後の文字(new)を入力し始めると、確定前であっても、画面上の文字が一時的に新しい文字に書き換わって表示される。
プレビューウィンドウ(‘split’ の効果): ここが ‘split’ 設定の最大の特徴です。置換対象が現在の画面外にある場合、自動的に画面が分割(スプリット)され、その場所を別ウィンドウで映し出してプレビューしてくれる。
|
|
現在カーソルがある行をハイライトする。
|
|
カーソルが画面の端(一番上や一番下)に張り付かないように、常に一定の余白を保つようにする
|
|
保存していないファイルがあるときにE37: No write since last change (add ! to override)のようなエラーを出さないようにし、Save changes to "ファイル名"? [Y]es, (N)o, (C)ancel:のような選択肢を表示させる。
|
|
検索が終わったら<Esc>でハイライトを消す。
|
|
<leader>q画面下部に、現在のファイル内のエラー箇所を表示する。
|
|
Neovimのターミナルを使っているときに、<Esc><Esc>で抜ける。
|
|
テキストをヤンク(コピー)した瞬間に、その範囲を一瞬だけピカッと光らせる。
|
|
ファイルを保存しようとした際に、保存先のディレクトリがなくても自動で作成するようにする。参考
|
|
:InitLuaで設定ファイルを開く。
|
|
Lazy.nvimのインストール先の決定
|
|
指定した場所に lazy.nvim が存在するかチェックし,なければ git clone コマンドを実行して、GitHubから最新の安定版(stable)をダウンロードします。これにより、手動でインストールする手間が省ける。
|
|
neovimへのlazy.nvim登録
|
|
Lazy.nvimの操作方法。
今のプラグインの状態確認は:Lazy、その後、helpは?、そのwindowを閉じるには、:q.
Gitで管理しているプロジェクトにおいて、行番号のすぐ左に
+:新しく追加された行。
~内容が変更された行
_行が削除された行
‾ファイルの先頭で行が削除された場合。
~既存の行が変更され、かつその一部が削除された場合。
という形で表示する。
|
|
which-key-nvimは<leader>などを押した後に、「次に何のキーを押せばいいか」教えてくれる。
<leader>s: 検索関連(Search)
<leader>t: 切り替え関連(Toggle)
<leader>h: Gitの変更箇所関連(Git Hunk)※ノーマルモードとビジュアルモード両方
|
|
nvim-telescopeが動くために必要な依存関係をインストールする。
plenary.nvim: Telescopeが動くために必須のライブラリ
fzf-native.nvim: 検索をさらに高速化する。
ui-select.nvim: Neovim標準の選択メニュー(コードアクションなど)を、Telescopeのかっこいい見た目に置き換える。
|
|
<leader>sf:ファイル検索
<leader>sg:ファイルの中身を文字列を検索
<leader><leader>:今開いているバッファの一覧を表示
<leader>/: 今開いているファイルの中だけで、あいまい検索をする(ドロップダウン形式で表示)。
<leader>sn([S]earch [N]eovim): Neovimの設定ファイルが置かれているフォルダ(init.lua など)を直接検索
|
|
mini.fileとmini.tablineの追加
|
|
neovimの設定(lua)を書いているときに、賢い補完と型情報を出してくれる。
|
|
nvim-lspconfigneovimが各種言語サーバーと会話するための標準設定集
mason.nvimLSPサーバー、リンター、フォーマッタなどを、Neovimの中から簡単にインストール・管理できる管理画面を提供
mason-lspconfigMasonで入れたLSPと、lspconfigをつなぐ
fidget.nvimLSPが重い処理(プロジェクトの読み込みなど)をしている時、右下にこっそり進捗状況を表示してくれる
blink.cmp補完機能を爆速にし、LSPが持つ高度な能力を最大限引き出せるようにする
|
|
grn (Rename): 変数名を一括変更します。参照先もすべて自動で書き換わる。
gra (Code Action): エラーの自動修正案を表示する。
grd (Definition): 定義場所へジャンプする。戻る時は <C-t> 。
grr (References): その変数が使われている場所を一覧表示する。
ドキュメント・ハイライト: カーソルを単語の上で止めると、同じ変数が使われている場所をハイライトし、カーソルを動かすと消えるように設定されています。
エラーの警告
severity_sort = true: 重大なエラーを優先的に表示します。
float = { border = 'rounded' }: エラー詳細を表示する浮遊ウィンドウの角を丸くして見やすくします。
virtual_text: 行の右側にエラーメッセージを薄く表示します。
自動で読み込むLSPの設定→clangd,gopls,pyright,rust_analyzar,lua_lsが有効
|
|
先ほどの設定で決めておいたLSPサーバーをインストールする
|
|
lsp以外で必要なツール(フォーマッタなど)をリストに追加する
|
|
作成したリストをmason-tool-installerに渡し、これらをすべてインストールする。LSPサーバーを起動する。
|
|
ファイルを保存したときに自動的にコードを整形する(conform.nvim)
<leader>fで手動整形
pythonとjsの整形ツールも追加した。
|
|
blink.cmp最先端の補完プラグイン
sources: どこから候補を持ってくるかを決めています。
-
lsp: プログラミング言語の知識(変数名、関数名など)。 -
path: ファイルのパス。 -
snippets: 定型文(スニペット)。 -
lazydev: Neovimの設定ファイル(Lua)を書く際の特別な補完。
signature: 関数の引数を入力しているときに、どんな引数が必要か小さなウィンドウで教えてくれます。
世界中の人が作った定型文を使えるようにする。friendly-snippets
操作方法
-
<C-n>/<C-p>: 候補の次 / 前を選択。 -
<C-y>: 決定(選択した候補を確定させる)。 -
<C-space>: 手動で補完メニューを開く。 -
<Tab>/<S-Tab>: スニペットの入力箇所を次 / 前へ移動
|
|
themeをtokyonight-stormにした。
カラースキームの設定(tokyonight.nvim)
|
|
TODO:やHACK:といった特定の単語を自動で検知して、色をつけて目立たせる
opts = { signs = false }: この設定では、画面の左端(行番号の横のサインカラム)にアイコンを表示しないように設定
<leader>stでTODOのコメントを一括表示する
|
|
mini.ai
-
va)- [V]isually select [A]round [}}paren -
yinq- [Y]ank [I]nside [N]ext [Q]uote -
ci'- [C]hange [I]nside [’]quote -
yi"- ““の内側をヤンク
mini.surround
-
saiw)- [S]urround [A]dd [I]nner [W]ord [)]Paren -
sd'- [S]urround [D]elete [’]quotes -
sr)'- [S]urround [R]eplace [)] [’]
mini.statusline- ステータスバーを高機能にする
mini.starter -ダッシュボードを表示する。
minisession-セッションを保存する。参考
|
|
nvim-treesitter
新しい言語を入れたときに自動でパーサーをインストールする。および、インデントの自動化あり。
|
|
denops.vim-denoで書かれたプラグインを導入する
|
|
skkeleton.vim-ddu.vimと連携してskk日本語入力を可能にする。参考のzennからコピペしてきた。azikについて調べる必要あり。
|
|
copilot.lua github copilotと連携して補完を起こなう。blink.cmpと連携済み。
|
|
markview.nvim-:Markviewでmarkdownプレビュ-を可能にする。
|
|
neoterm.nvim:<lerder>tgでタ-ミナルを開く <leadeR>tcタ-ミナルを閉じる
|
|
vimdoc-javimのhelpを日本語で開く
|
|
lazygit.nvimlazygitをneovim内か開けるようにする。
|
|
dial.nvim整数と16進数と日付を<c-a> <c-x>で変えられる。true,falseはできない.追記できるようになりました。
|
|