up:: Neovim

lazy.nvim

init.luaに記述、/lua/config/lazy.luaに設定。
/lua/pluginsに個々の.luaファイルを配置し、内部に以下のようにgithubリポジトリ名を配置する。

return {
  "folke/lazy.nvim"
}

github以外だとURLを直接書けばいい。

initで起動時のスクリプトを設定できる。以下のようにするとキーバインドなども自由に起動可能。

return {
  "folke/lazy.nvim",
  init = function()
    -- 自由記述
  end,
}

configでプラグインごとの設定。同じくfunction()を書くことになる。
正直役割はほぼ同じだが、configはスクリプトが読み込まれた後に動く。
What is the difference between setting keymaps inside the the `init` vs `config` table option in Lazy.nvim plugin spec? : r/neovim

optsなどにまとめておき、configでまとめて読むという方法がある。

return {
  "nvim-treesitter/nvim-treesitter",
  build = ":TSUpdate",
  opts = {
    --- コンフィグ
    },
  },
  config = function(_, opts)
    require("nvim-treesitter.configs").setup(opts)
  end,
}

これでもいい。

return {
	"nvim-lualine/lualine.nvim",
	dependencies = { "nvim-tree/nvim-web-devicons" },
	config = function()
		require("lualine").setup({
		-- 他プラグインマネージャーの設定ファイル
})
end,
}
 

/lua/plugins.luaにまとめて書く方法もある。
📂 Structuring Your Plugins | lazy.nvim

lazyvim のプラグインイン管理
使い込んで厳選したNeovimプラグインたちをご紹介します

optsにsetup用の引数を書いておけば、luaプラグインなら自動で読んでくれるらしい。
setup以外の設定はconfigで。

lazy.nvimの使い方から起動を爆速にする方法までを解説 | eiji.page

プラグイン遅延読み込み

ファイルタイプ、コマンド、キー入力のタイミングで遅延して読み込みできる。
lazyvimの遅延読み込み (lazyvim load lazy plugin)

それらのどのタイミングで読み込むかを決めるのがevent。

lazy.nvimの場合はlazy = trueを設定しておけばとりあえず開幕読み込みは防げる。プラグインが呼ばれるまで読まれない。

開幕じゃなくちょっとしてから読んでほしいならevent = "VeryLazy"を置く。

遅延読み込みのコマンドは大文字始まりのみ。存在しないコマンドでもOK。

lazy.nvimの使い方から起動を爆速にする方法までを解説 | eiji.page

プラグイン削除

:LazyからCleanを選択、カーソル合わせてx。
ファイルは残るので:!rmなどで消しておく。
🚀 Usage | lazy.nvim

起動時のアプデカット

checkerをfalseに。

require("lazy").setup({
	spec = {
		-- import your plugins
		{ import = "plugins" },
	},
	-- Configure any other settings here. See the documentation for more details.
	-- colorscheme that will be used when installing plugins.
	install = { colorscheme = { "everforest" } },
	-- automatically check for plugin updates
	checker = { enabled = false },
})

lazy.nvimがnvim起動時にアップデートを始めるため、起動が遅くなって今います。アップデートを手動にするにはどうしますか。

nvim-surround

GitHub - kylechui/nvim-surround: Add/change/delete surrounding delimiter pairs with ease. Written with in Lua.

選択文字列の囲み文字についてadd / delete / changeを行える。

nvim-cmp

GitHub - hrsh7th/nvim-cmp: A completion plugin for neovim coded in Lua.
補完。プラグイン式。補完する対象ごとに設定が必要。

nvim-treesitter

GitHub - nvim-treesitter/nvim-treesitter: Nvim Treesitter configurations and abstraction layer
基本的な強調表示。
:TSInstallでモジュールをインストールしたうえで直接編集か:TSEnableで有効化しないと意味が無い。

telescope.nvim

GitHub - nvim-telescope/telescope.nvim: Find, Filter, Preview, Pick. All lua, all the time.
あいまい検索。:Telescope。live_grep機能はripgrepに依存しているので別途インストール。

ripgrep

全文検索。ありとあらゆるファイルのテキストを検索する。

formatter.nvim

フォーマッタ。
nvim-cmpと同じくプラグイン式。ファイルタイプごとに設定が必要。

lazy.nvim用の設定が無く、なんかうまくいかなかったのでconform.nvim)を使用している。

formatterはスタイルをチェックし、ルールに基づいてコー[[conform.nvim](https://github.com/stevearc/conform.nvim)](<**[conform.nvim]

linterはコードをチェックし、バグやルールに沿って書かれているかをチェックする。

【社内勉強会③】Linter, Formatterについて Python - Qiita

[【社内勉強会③】Linter, Formatterについて Python - Qiita]a.vim)
かっこ補完。

obsidian.nvim

obsidianで出来るような操作を行う。
followlinkでリンクを開いたり、デイリーノート開いたり。

起動前にワークスペースの設定、文章の隠し度合の設定(live editorの程度)が必要。
ワークスペースはいつも通りだが、隠し度合は以下の設定をconfigなどに書く必要がある。
vim.opt_local.conceallevel = 1
Additional markdown syntax not rendering · Issue 286 · epwalsh/obsidian.nvim · GitHub

[Additional markdown syntax not rendering · Issue 286 · epwalsh/obsidian.nvim · GitHub]

plenary.nvim

非同期処理などを行う。
開発用の依存プラグイン。telescope.nvimなどが採用している。

everforest

スキン。
lazy.nvimで使用する際はconfig\lazy.lua内の設定をちゃんと変更する。

spzenhan.vim

normalモードの時だけIMEをオフにする。
設定を読み込めなかったので没。spzenhanへパスを通すのも面倒。

im-select.nvim

normalモードの時だけ 英語キーボードに切り替える
記号関係でめんどくなる。
一応対策っぽいのはあるが、これはssh越しで設定する時っぽい?
Neovimオススメ設定② 日本語入力を快適にするim-select.nvimのすすめ

spzenhan-lua

spzenhanのlua版。
合ってるはずなのに動かないしエラーも出さない。

jasegment.vim

日本語の文節でW,E,Bを制御。
ちゃんと動く。

vim-kensaku

ローマ字で検索できる。
単体では動かないので別のプラグインが必要。Denoも必要。

[denops] Failed to connect channel : Vim(let):connection failed: tcp address must be host:port

依存のdenopsのやつ。
キャッシュを以下のコマンドでアップデート。

:call denops#cache#update(#{reload: v:true})

Could not connect servers on launch time with denops 7.x · Issue 401 · vim-denops/denops.vim · GitHub

[Could not connect servers on launch time with denops 7.x · Issue 401 · vim-denops/denops.vim · GitHub]

ローマ字でスラッシュ検索で検索できる。
リマップが要るので以下を使う。

vim.keymap.set('c', '<CR>', '<Plug>(kensaku-search-replace)', { noremap = true, silent = true })

なんかすぐに検索してくれない、一文字追加したりしないと動かない。

vim-kensaku-command

:Kensakuで検索する。
手軽で普通に使える。

nvim-autopairs

かっこ補完。

neo-tree.nvim

ファイルブラウザ。:Neotreeで動く。

vimdoc-ja

helpの日本語化。
地味に重い(300msくらい)ので遅延読み込み推奨。
以下は設定例。:Hjaを実行するとヘルプが日本語化する。

return{
	'vim-jp/vimdoc-ja',
	cmd = {"Hja"},
	lazy = true,
	init = function()
		vim.cmd('helptags ALL')
		vim.opt.helplang = 'ja,en'
	end,
} 

win-ime-con.nvim

モード変更時にIMEを切替。
pipからneovimを入れる必要があるのだが、うちの設定だとuvの関係上仮想環境を作らないとpipが使えない。
どっかにデフォルト仮想環境を作ることになりそうだが、そこにneovimを入れたりというのはまあめんどいなって。

fzf-lua

fzfをneovim上で使う。
ファイル名だけでなくコマンドなどもfuzzy検索できる。
(fzfはピッカーでなくテキスト処理なので、実は元から)

:FzfLua commandで使用する。

conform.nvim

フォーマッタ。styluaを裏で動かしている。
styluaは同じフォルダにあるstylua.tomlを元にフォーマットする。

Luaのコードフォーマッター StyLua

公式お勧めの設定を使うと<leader>fにフォーマットコマンドが入る。

conform.nvim/doc/recipes.md at master · stevearc/conform.nvim · GitHub

lualine.nvim

ステータスバー。
デフォルトの設定がリポジトリにある。テーマがAutoになってるのでそれだけ変更する。

【Neovim】lualineの表示をカスタムしてみる。Visualモードで選択された行数、文字数を表示してみる

diffview.nvim

diffコマンドを使いやすくする。

git-conflict.nvim

コンフリクトを解消する。必須級。
:Gitまで打つと補完出る。

nvim-yati

treesitterの小修正。Treesitterの代わりに使う。

mason.nvim

LSPを管理する。
LSPはlanguage server protocolの略。プロジェクトソースを解析して情報を提供するIDE用のサービスの仕様。
Microsoftが2016年から主導している。

language server protocolについて (前編) VSCode - Qiita

[language server protocolについて (前編) VSCode - Qiita]
DAPはDebug Adapter Protocol。これもMicrosoft主導、デバッガー用の情報提供。

Rustのtokioを使ってLSP, DAPサーバーを書く

起動には一度どこかでrequire("mason").setup()を実行する必要がある。
なのでこう。

return {
	"williamboman/mason.nvim",
	config = function()
		require("mason").setup()
	end,
}

:Masonでインストールできるlspの一覧が見られる。

Neovim+LSPをなるべく簡単な設定で構築する

あくまでlspを管理するだけであり、実質miseとかと変わらない。
実際にフォーマットしたりするなら別にconform.nvimなどを使用する必要がある。

rustfmtが非推奨なのは、rus[conform.nvim](<**[conform.nvim]
あとスペース消してくれないのは仕様。

rustfmt: deprecated: rustfmt should now be installed via rustup · Issue 1429 · williamboman/mason.nvim
いちからvimのrust開発環境を構築していく❗️(rust.vim, coc.nvim)
[rustfmt: deprecated: rustfmt should now be installed via rustup · Issue 1429 · williamboman/mason.nvim]