始めに
昨今のエディタ論戦は、LLMサポートの優秀さが主なテーマになっていますね。
もういつの話か覚えていませんが、Copilotによる自動補完のサポートを試しましたが、意図しない提案ばかりで良い印象を持ちませんでした。
今時のモデルを使えば、また違って結果になっていたかもしれせんね。
年末ですので、今のneovim環境を記録しておきます。
なお、昨年12月に異動があり、あまりコードを書かなくなりました
起動スピードは112msecですね。前回測定時とあまり変わっておらず、一安心しました。

お世話になっているプラグイン(の一部)の紹介
私のエディタ生活を支えてくれているプラグイン達です。
Obsidianインターフェイス
obsidian.nvim
今時の使い方だと、LLM用の学習リソースを集約して...となりそうですが、私の場合は単純にメモを一元管理したかったため、使い始めました。
アプリのObsidianから始まりましたが、このプラグインでnvimインターフェイスにしてから一気に使い方が広がった印象です。
始めは、Obsidianコマンドが有効にならず戸惑いましたが、filetypeがmarkdownじゃないと使えないことを知り、逐一 「set filetype=markdown」とやっていた時期もありましたが、
vim.keymap.set("n", "ob", "cd [obsidianファイル置き場]")
でObsidianコマンドが有効になるのを知ってからは快適に使えるようになりました。
良く使うサブコマンドは、today, new, searchあたりですかね。

ターミナル関係
floattyを使っています。
ToggleTermに不満があった訳ではありませんが、使っていない機能が多くあったのと、あまり更新されなくなったのが変更の理由です。
Lazygitとの連携も簡単に出き、重宝しています。
カーソル移動
ごめん、カーソル移動を効率的にするヘルシェイク矢野.vimのこと考えてた
を見て乗り換えました。
taketsさん、ありがとうございます。
下の設定で使っています。
(w2回しか使っていないかも知れませんね...w)
{
'nekowasabi/hellshake-yano.vim',
dependencies = { 'vim-denops/denops.vim' },
config = function()
vim.g.hellshake_yano = {
hintPosition = "both",
motionCount = 10,
useJapanese = true,
triggerOnHjkl = false,
suppressOnKeyRepeat = true,
defaultMinWordLength = 4,
perKeyMotionCount = {
w = 2, -- Show hints immediately on word motion
b = 2, -- Show hints immediately on word motion
v = 2 -- Show hints immediately in visual mode
}
}
end
},
LSP連携
LspUI.nvim
私の使い方だと、Definition, Reference, Diagnosticsぐらいあれば良く、それぞれを単体で提供してくれる軽量ライブラリを使おうかなと思いましたが、プラグインの選定に時間を割くのも目的と手段が入れ替わっているなーと思い、こちらにしました。
上記で伸べた様に、上4つぐらいしか使っていません。
local keyset = vim.keymap.set
keyset("n", "gr", "<cmd>LspUI reference<CR>")
keyset("n", "gd", "<cmd>LspUI definition<CR>")
keyset("n", "]d", "<cmd>LspUI diagnostic next<CR>")
keyset("n", "[d", "<cmd>LspUI diagnostic prev<CR>")
keyset("n", "<leader>ca", "<cmd>LspUI code_action<CR>")
keyset("n", "<leader>ci", "<cmd>LspUI call_hierarchy incoming_calls<CR>")
keyset("n", "<leader>co", "<cmd>LspUI call_hierarchy outgoing_calls<CR>")
Test Runner
asyncrun.vim
スコープは今のところ、pytestのみです。
-cwd= <root>でtestファイル置き場の1階層上のpytest.iniやtestディレクトリに移動してくれるのがありがたかったです。
pytestを叩くだけだと、こちらのプラグインで充分ですね。
なお、rootについては、asyncrun.vimのgithubページに下のように記載されています。
The project root is the nearest ancestor directory of the current file
which contains one of these directories or files: .svn, .git, .hg, .root or .project.
If none of the parent directories contains these root markers,
the directory of the current file is used as the project root.
下の設定で、テスト結果をquickfixにしています。
-modeと-posで出力先をコントロール出来ます。
githubのページが充実しているので、ご興味ありましたら見てみてください。
{
'skywind3000/asyncrun.vim',
config = function()
vim.g.asyncrun_open = 8
end
},
vim.keymap.set("n", "<leader>pt", "<cmd>AsyncRun -cwd=<root> uv run pytest<CR>")
目立ちませんが、お世話になっているプラグイン達です
"unblevable/quick-scope"
f1回で一意にジャンプ出来る文字をハイライトしてくれます。
"tadaa/vimade"
Windowを分割した時に、使っているWindowの色を変えてくれます。
"mboyov/pane-resizer.nvim"
Windowを分割した時に、使っているWindowの幅を広くしてくれます。
"b0o/incline.nvim"
"shellRaining/hlchunk.nvim"
'kevinhwang91/nvim-ufo'
折り畳みのプラグインです。
今後やりたい事
Lazyの設定ファイルの整理
プラグインのSampleをそのまま貼り付けるのが多いので、中々カオスな状態です。
複数行の設定は別ファイルに切り出して、1プラグイン1行にしたいところです。
keymapを単一ファイルに
Lazyのファイルに書いたり、専用のkeymap.luaに書いたりバラバラなので、keymap.luaに集約したいところです。
この記事がどなたかのお役に立つと嬉しく思います。

