我的工作区通常是一个非常大的带有 vim 的 xterm,分成六个或更多缓冲区。如果能更明显地看出哪一个是活动缓冲区,那将非常有帮助。现在我使用行号来表示这一点:
augroup BgHighlight
autocmd!
autocmd WinEnter * set number
autocmd WinLeave * set nonumber
augroup END
但这意味着当我更改缓冲区时,我的代码会向左或向右跳转,这很烦人。另外,我希望能够看到哪一行是第 94 行,即使在不活跃缓冲区。那么,有什么方法可以改变活动缓冲区中的行号颜色吗?
答案1
按照您的模板,您可以改变不同的属性,例如colorcolumn:
augroup BgHighlight
autocmd!
autocmd WinEnter * set colorcolumn=80
autocmd WinLeave * set colorcolumn=0
augroup END
这将为当前窗口的第 80 列着色,同时禁用其他列。这比设置/取消设置行号稍微不那么麻烦。
如果你习惯突出显示当前行(set cul),那么一个更不具侵入性的选项是执行以下操作:
augroup BgHighlight
autocmd!
autocmd WinEnter * set cul
autocmd WinLeave * set nocul
augroup END
这一切都取决于您的使用方式以及您愿意忍受什么。
答案2
状态行的颜色是了解哪个窗口处于活动状态的最常用方法。它在您的配色方案中用以下两行定义:
hi StatusLine ctermfg=15 guifg=#ffffff ctermbg=239 guibg=#4e4e4e cterm=bold gui=bold
hi StatusLineNC ctermfg=249 guifg=#b2b2b2 ctermbg=237 guibg=#3a3a3a cterm=none gui=none
第一个用于当前窗口,第二个用于“非当前”窗口。
以下摘录自xoria256,您应该使颜色适合您的配色方案。
但你可以尝试类似的方法(注意,第二行的颜色是完全随机的):
augroup NrHighlight
autocmd!
autocmd WinEnter * hi LineNr ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212
autocmd WinLeave * hi LineNr ctermfg=274 guifg=#e9e9e9 ctermbg=133 guibg=#212121
augroup END
答案3
另请参阅我的插件,它可以使非活动窗口变暗:https://github.com/blueyed/vim-diminactive