升级到 neovim 0.10 后,一些自动命令(例如
autocmd ColorScheme * hi Normal ctermbg=none
)已停止在终端中工作。对我来说,这通过 Windows 终端发生在 Linux 的 Windows 子系统中。下面记录了原因和解决方法作为答案。
gui
的地方添加 cterm
。set notermguicolors
Neovim 0.10 有这个重大变化(来源:https://neovim.io/doc/user/news-0.10.html):
当 Nvim 能够确定主机终端仿真器支持 24 位颜色时,默认启用“termguicolors”。
启用
termguicolors
后,gui
命令将变得相关,而不是 cterm
。从这个 stackoverflow 答案(cterm 颜色和 gui 颜色有什么区别?):
由控制台版本的 Vim 使用(当ctermxx
时)。set notermguicolors
在 GVim 中使用,如果guixx
则在控制台中使用,并且控制台显然能够显示 TrueColor。set termguicolors
因此,像
autocmd ColorScheme * hi Normal ctermbg=none
这样的自动命令应该更改为 autocmd ColorScheme * hi Normal guifg=none
,因为现在 gui
部分即使在终端中也是相关的。当然,为了安全起见,可以在自动命令中同时使用 gui
和 cterm
:autocmd ColorScheme * hi Normal guifg=none ctermbg=none
。
显然,另一个选择是通过
termguicolors
关闭
set notermguicolors