vim-变暗非活动分体式窗格玻璃

vim-变暗非活动分体式窗格玻璃,vim,iterm2,Vim,Iterm2,如果您熟悉iTerm2应用程序,就会知道您可以像vim一样分割视图,而非活动视图是“暗显”的 我通常在vim中使用三个垂直分割视图,例如,通过将背景颜色设置为较暗的色调来调暗非活动视图会很好 有办法做到这一点吗 如您所述更改背景颜色将需要不同Vim窗口的不同配色方案。据我所知,这是不可能的,因为这是一个全球性的设置(见几天前) 作为激活窗口的视觉辅助,我发现statusline在使用上已经足够了。活动窗口(hi StatusLine)和任何活动窗口(hi StatusLineNC)的突出显示组不

如果您熟悉iTerm2应用程序,就会知道您可以像vim一样分割视图,而非活动视图是“暗显”的

我通常在vim中使用三个垂直分割视图,例如,通过将背景颜色设置为较暗的色调来调暗非活动视图会很好

有办法做到这一点吗


如您所述更改背景颜色将需要不同Vim窗口的不同配色方案。据我所知,这是不可能的,因为这是一个全球性的设置(见几天前)


作为激活窗口的视觉辅助,我发现statusline在使用上已经足够了。活动窗口(
hi StatusLine
)和任何活动窗口(
hi StatusLineNC
)的突出显示组不同。你可以选择一个对比鲜明的配色方案,也可以编辑你最喜欢的配色方案。

我想出了以下解决方案(使用“colorcolumn”和取消设置“cursorline”):

在我的(当前)点文件中查看:

更新 我用它创建了一个插件:

在neovim(v0.2.1)中,以下配置将使非活动窗格变暗:

hi ActiveWindow ctermbg=16 | hi InactiveWindow ctermbg=233
set winhighlight=Normal:ActiveWindow,NormalNC:InactiveWindow

把这个作为一个新的答案扔出去。淡入非活动缓冲区,保留语法高亮显示,还可以淡入符号。我是作者,但我认为这可能是有用的一些作为一个新的选择。支持nvim和vim8、256色终端、termguicolors和gui。

除了对比状态行之外,我发现设置一个突出的光标行很有帮助。虽然这是OP接受的答案,但实际上是不正确的。@blueyed的答案提供了一个脚本,该脚本放在my.vimrc中,可以有效地更改非活动缓冲区(窗口)的背景颜色。这有点像黑客,但它是有效的。这可能会使任何正在挣扎的机器更有效率。我们并不需要每次切换窗口时都运行所有窗口。我们只需要在我们离开的任何窗口上执行
setwinvar
,在WinEnter上执行
setlocalnocolorcolumn
。(这是假设我们的会话只从一个窗口开始,我们从不在不输入每个窗口的情况下创建多个窗口。)@AndyRay我用它创建了一个插件:根据你的回答,我还创建了一个快速而肮脏的插件:@joey twidle cool!在我创造我的之前,现在应该是很好的。如果您想合并您的更改(例如,通过配置忽略某些buftype),我将非常感谢您的请求。@blueyed我的内容几乎没有什么新奇之处,但如果我发现任何改进,我当然会在将来做出贡献;你做了一笔回购交易,这很好。我认为你也会受到三个限制:1。真正的长包装行不会在第256列之后变暗。2.超出限制的行,即“~”行不会变暗。3.光标线高亮显示遮罩了暗显窗口上可能具有的任何有用的背景高亮显示(例如,QuickFix中的最后一行或标记列表中的当前标记行)。我也可以在那些窗口上禁用暗显,但是只有编辑窗口会暗显!只是想补充一点:如果你在GUI中使用nvim(例如nvim qt),用
guibg
替换
ctermbg
,并使用十六进制颜色作为值,例如
guibg=#E7E7E7
。我认为这里有一个误解,你根本不需要在neovim中使用winhighlight,“法线”和“法线高光”组是指定单独的非活动窗口背景色所需的全部。当您想在特定窗口上设置不同的突出显示状态时,可以使用winhighlight。尝试过,喜欢过,使用过。干杯。我也试过并且喜欢这个。干得好。
hi ActiveWindow ctermbg=16 | hi InactiveWindow ctermbg=233
set winhighlight=Normal:ActiveWindow,NormalNC:InactiveWindow