让 vim 中的活动窗口更加明显

让 vim 中的活动窗口更加明显

我的工作区通常是一个非常大的带有 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

答案4

您可以将其添加到您的~/.vimrc,这将使非活动窗口的状态栏具有深灰色背景,以区别于活动窗口的白色状态栏。

highlight StatusLineNC cterm=bold ctermfg=white ctermbg=darkgray

请参阅此屏幕截图示例。中间窗口处于活动状态(白色状态栏)。左侧和右侧窗口处于非活动状态(深灰色状态栏)。

在此处输入图片描述

相关内容