使Vim中的活动窗口更加明显


22

我的工作区通常是一个带有vim的非常大的xterm,分为六个或更多缓冲区。如果更明显地知道哪个是活动缓冲区,那将非常有帮助。现在,我正在使用行号:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set number
    autocmd WinLeave * set nonumber
augroup END

但这意味着当我更改缓冲区时,我的代码向左或向右跳转,这很烦人。另外,即使在非活动缓冲区中,我也希望能够看到第94行。那么,有什么方法可以更改活动缓冲区中行号的颜色吗?

Answers:


26

在模板之后,您可以更改不同的属性,例如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

这一切都取决于您的用法和您愿意忍受的。


11

状态线的颜色是了解哪个窗口处于活动状态的最常用方法。这是在您的colorcheme中用以下两行定义的:

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

我已经尝试过更改WinEnter / WinLeave上的LineNr高亮显示,但是看来LineNr的着色是全局的。
Dr.Hyde

是的,我不得不等待您的评论来记住这一点。因此,不行,如果LineNr是全局的,则显然无法在特定窗口中进行更改。您认为状态栏不够吗?
romainl 2012年

我想知道是否还有其他每个窗口的LineNr版本。不,我认为状态栏不够。它有帮助,但是我想要更多。使用状态行的一个问题是,窗口底部的活动窗口指示器与我们在其他任何地方所拥有的指示器完全相反-窗口顶部的标题栏会更改颜色-因此有一瞬间停下来思考“哦,是的,vim反过来了”。而行号在每个应用程序中始终在同一位置。
Dr.Hyde

如果您可以更改窗口背景颜色,我真的很喜欢,但是从上面看来,这是不可能的。
乔纳森·哈特利

使用hi StatusLine...hi StatusLineNC...魅力一样!
Luc M


2

这是我的工作:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set relativenumber
    autocmd WinLeave * set norelativenumber
augroup END

相对数字只是计算重复命令数量的一种手段,在您未编辑的窗口中没有用。



1

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

highlight StatusLineNC cterm=bold ctermfg=white ctermbg=darkgray

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

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.