## 概要
[[Neovim]] 0.11がリリースされたのでバージョンアップしてみる。リリース内容は以下。
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://neovim.io/favicon.ico" />
<span class="link-card-v2-site-name">neovim.io</span>
</div>
<div class="link-card-v2-title">
News-0.11 - Neovim docs
</div>
<div class="link-card-v2-content">
Neovim user documentation
</div>
<a href="https://neovim.io/doc/user/news-0.11.html"></a>
</div>
更新内容の把握と対応については以下の記事を参考にする。
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://gpanders.com/favicon-32x32.png" />
<span class="link-card-v2-site-name">gpanders.com</span>
</div>
<div class="link-card-v2-title">
What's New in Neovim 0.11 | g.p. anders
</div>
<div class="link-card-v2-content">
Neovim 0.11 was just released. As in previous installments in this series, let’s talk a bit about some of the bi ...
</div>
<a href="https://gpanders.com/blog/whats-new-in-neovim-0-11/"></a>
</div>
## 環境
| 対象 | バージョン |
| ---------- | ----------- |
| [[Ubuntu]] | 24.04.1 LTS |
| [[Neovim]] | 0.11.0 |
| [[mise]] | 2025.3.11 |
## 事前準備
[[🦉owl-playbook]]はブランチ (`neovim-0.11`) を切っておく。
## neovim 0.11.0のインストール
[[mise]]でインストールする。
```console
mise up neovim
```
> [!error]- 404 Not Foundエラーになる場合
>
> [[mise]]のバージョンが `2025.1.6` で発生した。
>
> ```error
> mise ERROR failed to install aqua:neovim/
[email protected]
> mise ERROR HTTP status client error (404 Not Found) for url (https://api.github.com/repos/neovim/neovim/releases/tags/0.11.0)
> mise ERROR no asset found: nvim-linux64.tar.gz
> Available assets:
> nvim-linux-arm64.appimage
> nvim-linux-arm64.appimage.zsync
> nvim-linux-arm64.tar.gz
> nvim-linux-x86_64.appimage
> nvim-linux-x86_64.appimage.zsync
> nvim-linux-x86_64.tar.gz
> nvim-macos-arm64.tar.gz
> nvim-macos-x86_64.tar.gz
> nvim-win64.msi
> nvim-win64.zip
> shasum.txt
> mise ERROR Run with --verbose or MISE_VERBOSE=1 for more information
> ```
>
> [[miseをアップデート]]したら次は成功した。
>
> ```
> New release found! v2025.1.6 --> v2025.3.11
> ```
>
> [[mise]]のせいなのかは不明。
バージョンは0.11.0。
```console
$ nvim --version
NVIM v0.11.0
Build type: Release
LuaJIT 2.1.1741730670
Run "nvim -V1 -v" for more info
```
## プラグインのバージョンアップ
[[lazy.nvim]]の `Sync` で最新化する。
> [!note]- バージョンアップ後のプラグインとコミットハッシュ
> | Plugin | Commit |
> |--------|--------|
> | CamelCaseMotion | de439d7c |
> | Comment.nvim | e30b7f20 |
> | LuaSnip | c9b9a229 |
> | ReplaceWithRegister | 832efc23 |
> | aerial.nvim | 9ebc1358 |
> | barbar.nvim | 807bede7 |
> | blame.nvim | 39bb4cda |
> | cmp-buffer | 3022dbc9 |
> | cmp-cmdline | d250c63a |
> | cmp-dictionary | fecc3ef2 |
> | cmp-nvim-lsp | 99290b3e |
> | cmp-path | 91ff86cd |
> | cmp_luasnip | 98d9cb5c |
> | codecompanion.nvim | fc950988 |
> | conform.nvim | f9ef25a7 |
> | copilot.lua | d661d65b |
> | denops.vim | 4ff8f353 |
> | diffview.nvim | 4516612f |
> | fidget.nvim | d9ba6b7b |
> | flash.nvim | 3c942666 |
> | fzf | ba6d1b87 |
> | gitgraph.nvim | 01e466b3 |
> | gitlinker.nvim | 23982c86 |
> | gitsigns.nvim | 3c76f7fa |
> | grug-far.nvim | 9411a993 |
> | lasterisk.nvim | bbcfcaec |
> | lazy.nvim | 6c3bda4a |
> | lazydev.nvim | 2367a6c0 |
> | lazygit.nvim | b9eae3ba |
> | lsp_signature.nvim | b58cca00 |
> | lspkind.nvim | d79a1c32 |
> | lspsaga.nvim | 778d56ff |
> | lualine.nvim | 1517caa8 |
> | luvit-meta | 1df30b60 |
> | markdown-preview.nvim | a923f5fc |
> | markdown-toggle.nvim | 0b9d917c |
> | mini.icons | 86a633f0 |
> | no-neck-pain.nvim | 53c8ef09 |
> | noice.nvim | 0427460c |
> | ns-textobject.nvim | 6341bc16 |
> | nui.nvim | 8d3bce97 |
> | nvim-autopairs | 65220277 |
> | nvim-bqf | e20417d5 |
> | nvim-cmp | 1e1900b0 |
> | nvim-highlight-colors | 9f934dd1 |
> | nvim-hlslens | 00b9c735 |
> | nvim-lspconfig | 0a1ac55d |
> | nvim-notify | 22f29093 |
> | nvim-scrollbar | 6994eb9f |
> | nvim-surround | caf6f633 |
> | nvim-treesitter-context | 93b29a32 |
> | nvim-treesitter | 86768fdd |
> | nvim-ts-autotag | a1d526af |
> | nvim-ufo | 5b75cf5f |
> | nvim-web-devicons | aafa5c18 |
> | oil.nvim | ab887d92 |
> | plenary.nvim | 857c5ac6 |
> | promise-async | 119e8961 |
> | quicker.nvim | 1798be71 |
> | render-markdown.nvim | a1fc4e55 |
> | schemastore.nvim | e659e0c6 |
> | screenkey.nvim | 16390931 |
> | smart-open.nvim | 7770b01c |
> | snacks.nvim | bc0630e4 |
> | sqlite.lua | 50092d60 |
> | sqls.nvim | d1bc5421 |
> | telescope-fzy-native.nvim | 282f0695 |
> | telescope.nvim | a4ed8250 |
> | text-case.nvim | e898cfd4 |
> | timber.nvim | 84e29132 |
> | tiny-inline-diagnostic.nvim | 0a3be983 |
> | todo-comments.nvim | 304a8d20 |
> | toggleterm.nvim | 50ea089f |
> | tokyonight.nvim | 057ef5d2 |
> | treesj | 6c616638 |
> | trouble.nvim | 85bedb7e |
> | vim-illuminate | 19cb21f5 |
> | vim-repeat | 65846025 |
> | vim-table-mode | e4365bde |
> | vim-textobj-entire | 64a856c9 |
> | vim-textobj-user | 41a675dd |
> | winresizer | 9bd559a0 |
## 新機能
気になったものだけ。
### [[virtual lines diagnostic (Neovim)|virtual lines diagnostic]]
[[lsp_lines.nvim]]の作者や協力者の力を借りて追加された機能。
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://gpanders.com/favicon-32x32.png" />
<span class="link-card-v2-site-name">gpanders.com</span>
</div>
<div class="link-card-v2-title">
What's New in Neovim 0.11 | g.p. anders
</div>
<div class="link-card-v2-content">
Neovim 0.11 was just released. As in previous installments in this series, let’s talk a bit about some of the bi ...
</div>
<a href="https://gpanders.com/blog/whats-new-in-neovim-0-11/#virtual-lines"></a>
</div>
![[Pasted image 20250330214503.png]]
`vim.diagnostic.config` で `virtual_lines = true` を指定すると有効にできる。
```lua
vim.diagnostic.config({
virtual_lines = true,
})
```
検討の結果、[[tiny-inline-diagnostic.nvim (Neovim)|tiny-inline-diagnostic.nvim]]を使い続けることにした。
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" />
<span class="link-card-v2-site-name">Minerva</span>
</div>
<div class="link-card-v2-title">
💿VIM-0000 Neovim LSP diagnosticsのvirtual_lineを使う
</div>
<div class="link-card-v2-content">大きな理由は以下3点。ただ、今後気が変わる可能性はあるので引き続きウォッチしていく。- virtual lineによってコードの表示位置がコロコロ変わることが耐えられないくらいnoisyである- tiny-inline-diagnostic.nvimの方が直感的で見やすい- ピンポイントにDiagnosticの場所を指さなくてもほぼ問題はない (なかった)</div>
<img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/vim-adr.webp" />
<a data-href="💿VIM-0000 Neovim LSP diagnosticsのvirtual_lineを使う" class="internal-link"></a>
</div>
%%[[💿VIM-0000 Neovim LSP diagnosticsのvirtual_lineを使う]]%%
### Terminal New mappings `[[` and `]]`
`[[` と `]]` で前後のコマンドに移動できるようになった。([[モーション]]というわけではなさそう)
[[Zsh]]の場合 `~/.zshrc` に以下を追加。
```zsh
# OSC 133 sequences
preexec() { printf "\033]133;A\033\\" }
precmd() { printf "\033]133;B\033\\" }
```
## 変更点
### vim.diagnostic.config の virtual_text がデフォルトfalseに
0.10までは `true` だったので、[[tiny-inline-diagnostic.nvim (Neovim)|tiny-inline-diagnostic.nvim]]の設定などで `false` にする必要があったが不要になった。
```diff
return {
"rachartier/tiny-inline-diagnostic.nvim",
event = "LspAttach",
priority = 1000,
config = function()
require("tiny-inline-diagnostic").setup({
options = {
show_source = true,
multilines = {
enabled = true,
always_show = false,
},
},
})
- vim.diagnostic.config({
- -- native LSPのインライン表示を無効にする
- virtual_text = false,
- })
end,
}
```
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://gpanders.com/favicon-32x32.png" />
<span class="link-card-v2-site-name">gpanders.com</span>
</div>
<div class="link-card-v2-title">
What's New in Neovim 0.11 | g.p. anders
</div>
<div class="link-card-v2-content">
Neovim 0.11 was just released. As in previous installments in this series, let’s talk a bit about some of the bi ...
</div>
<a href="https://gpanders.com/blog/whats-new-in-neovim-0-11/#virtual-text-handler-changed-from-opt-out-to-opt-in"></a>
</div>
## トラブルシューティング
問題が発生したら追加していく。
### sign_defineが非推奨になっている
以下の警告が出る。
```warning
Defining diagnostic signs with :sign-define or sign_define() is deprecated. Run ":checkhealth vim.deprecated" for more information
```
`:checkhealth vim.deprecated` の結果。
```warning
- WARNING Defining diagnostic signs with :sign-define or sign_define() is deprecated. Feature will be removed in Nvim 0.12
- ADVICE:
- use vim.diagnostic.config() instead.
```
[[nvim-lspconfig]]の以下が原因。
```diff
local signs = { Error = "●", Warn = "●", Hint = "●", Info = "●" }
for type, icon in pairs(signs) do
local hl = "DiagnosticSign" .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl })
end
```
これを削除して `base.lua` の [[LspAttach (Neovim)|LspAttach]]イベントで設定する。
```lua
vim.api.nvim_create_autocmd("LspAttach", {
-- 中略
local signs = { Error = "●", Warn = "●", Hint = "●", Info = "●" }
vim.diagnostic.config({
signs = {
text = {
[vim.diagnostic.severity.ERROR] = signs.Error,
[vim.diagnostic.severity.WARN] = signs.Warn,
[vim.diagnostic.severity.INFO] = signs.Info,
[vim.diagnostic.severity.HINT] = signs.Hint,
},
},
})
})
```
### コードブロックの最終行が見えなくなった
こういうコードを書いたとき。
~~~
```lua
local a = 1
local b = 1
```
~~~
今まではこうだった。
![[Pasted image 20250331000526.png]]
それがこうなった。
![[Pasted image 20250331000903.png]]
109行目を見落としてしまうし、コードブロックの見栄えとしても[[padding]]がなくて悪い。Miscellaneousに記述があった。
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://gpanders.com/favicon-32x32.png" />
<span class="link-card-v2-site-name">gpanders.com</span>
</div>
<div class="link-card-v2-title">
What's New in Neovim 0.11 | g.p. anders
</div>
<div class="link-card-v2-content">
Neovim 0.11 was just released. As in previous installments in this series, let’s talk a bit about some of the bi ...
</div>
<a href="https://gpanders.com/blog/whats-new-in-neovim-0-11/#miscellaneous"></a>
</div>
> Extmarks now have the ability to conceal entire lines, rather than just characters within a line. This is used, for example, in Markdown buffers to hide code fences (e.g. ```) when conceallevel is set without leaving empty lines.
[[render-markdown.nvim]]の設定変更で対応できそう。
```lua
return {
"MeanderingProgrammer/render-markdown.nvim",
-- 中略
opts = {
-- 中略
code = {
-- [追加]
border = "thin",
},
},
}
```
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" />
<span class="link-card-v2-site-name">GitHub</span>
</div>
<div class="link-card-v2-title">
fix: support for code border for 0.11, disable conceal_lines highlights · MeanderingProgrammer/render-markdown.nvim@e6c8081
</div>
<div class="link-card-v2-content">
## DetailsRelated issues:- https://github.com/MeanderingProgrammer/render-markdown.nvim/issues/351- https://gith ...
</div>
<img class="link-card-v2-image" src="https://opengraph.githubassets.com/872d4c3c4f8755548aeb6d131513d82220876b7b1e4e77bbedf86a3ca8a037cb/MeanderingProgrammer/render-markdown.nvim/commit/e6c8081691881fd63b4d72cb472094ac190ac56e" />
<a href="https://github.com/MeanderingProgrammer/render-markdown.nvim/commit/e6c8081691881fd63b4d72cb472094ac190ac56e"></a>
</div>
## Native LSPへの移行
### lsp_signature.nvim をやめられるか?
nativeの機能で[[lsp_signature.nvim]]を代用できるか確かめる。
[[挿入モード]]で以下のようにサジェストが出ればOK。
![[Pasted image 20250405131939.png]]
![[Pasted image 20250405131958.png]]
以下の点で[[lsp_signature.nvim]]を使い続ける恩恵がありあそう。
- 表示が好み
- 表示位置が好み
- `vim.lsp.buf.signature_help()` は手動実行が必要
- [[autocmd (Neovim)|autocmd]]で設定可能だろうけど、そこ頑張るなら[[lsp_signature.nvim]]使いたい
- 高機能な気がする
### blink.cmpへの移行
<div class="link-card-v2">
<div class="link-card-v2-site">
<img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" />
<span class="link-card-v2-site-name">Minerva</span>
</div>
<div class="link-card-v2-title">
📜2025-04-02 nvim-cmpからblink.cmpに移行してみる
</div>
<div class="link-card-v2-content">nvim-cmpからRust製の高速補完プラグインblink.cmpへ移行した経緯や設定方法、LSPやバッファ、パス、ユーザー辞書、スニペット、カラープレビューなど主要な補完機能の対応状況、LazyVimやnvim-lspconfigとの連携、キーバインドや見た目のカスタマイズ、移行時の注意点についての記録。</div>
<img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/activity.webp" />
<a data-href="📜2025-04-02 nvim-cmpからblink.cmpに移行してみる" class="internal-link"></a>
</div>
%%[[📜2025-04-02 nvim-cmpからblink.cmpに移行してみる]]%%