ubuntu终端中的vim:“;背景“;属性在加载vimrc后设置

ubuntu终端中的vim:“;背景“;属性在加载vimrc后设置,ubuntu,vim,colors,gnome-terminal,Ubuntu,Vim,Colors,Gnome Terminal,我在ubuntu的默认终端中使用vim。 我设置了两个终端配置文件:一个名为“暗”的配置文件,带有颜色>内置方案>“日光化暗”,另一个名为“光”的配置文件,带有日光化光 在Vim中,我希望光标线高亮显示,因此我将此命令放在我的vimrc中: hi CursorLine cterm=NONE ctermbg=254 ctermfg=NONE autocmd OptionSet background if exists("g:syntax_on") | syntax on

我在ubuntu的默认终端中使用vim。 我设置了两个终端配置文件:一个名为“暗”的配置文件,带有颜色>内置方案>“日光化暗”,另一个名为“光”的配置文件,带有日光化光

在Vim中,我希望光标线高亮显示,因此我将此命令放在我的
vimrc
中:

hi CursorLine   cterm=NONE ctermbg=254 ctermfg=NONE
autocmd OptionSet background if exists("g:syntax_on") | syntax on | endif
这将亮显具有浅灰色背景的光标线。它是完美的,当使用日光灯,但不是在所有使用日光灯黑暗

幸运的是,通过一些我不了解的机制,vim知道我使用的是日晒黑暗还是日晒灯光:
background
选项被相应地设置为“亮”或“暗”。 例如,如果我使用日光灯,会发生以下情况:

:set background?
  background=light
所以我想我会在我的
vimrc
中使用它来根据我使用的配色方案更改光标线的颜色:

set cursorline
if &background == "light"
    hi CursorLine   cterm=NONE ctermbg=254 ctermfg=NONE
else
    hi CursorLine   cterm=NONE ctermbg=238 ctermfg=NONE
endif
问题:它不起作用。光标线始终为浅灰色, 好像
背景
属性总是设置为
“灯光”

似乎在加载
vimrc
时,
background
属性尚未更改

请注意,如果我在Vim中执行
source~/.vimrc
,效果会很好,光标线会以适当的颜色高亮显示

你知道怎么解决吗

配置 vim 7.4.1689
GNOME终端3.18.3
Ubuntu 16.04 LTS和Ubuntu 17.04

编辑
请注意,我的
vimrc
中没有任何
:colorscheme
:我通过gnome终端配置文件获得日光主题。我不认为维姆“知道”我在使用这些颜色;只是有些脚本根据我的gnome终端颜色选择设置了vim的
背景变量。

有一个名为
AfterColors.vim的vim插件,它允许人们在加载颜色方案后自定义内容。您基本上需要将highlight cursorline语句(
hi cursorline…
)放在/colors/common.vim
文件之后的

从AfterColors.vim脚本的文档中:

允许您创建after/colors/脚本以自定义任何 配色方案

--例如——如果您喜欢“沙漠”配色方案,但确实希望注释为红色,函数为蓝色,那么以前您会这样做 将整个配色方案复制到您的主目录中,并对其进行自定义。 安装此插件后,您可以创建一个小脚本进行更改 这正是你想要的配色方案的部分,你会怎么做 对于ftplugin或语法脚本:

对于unix系统,您将创建:~/.vim/after/colors/desert.vim: 突出显示注释guifg=Red ctermfg=Red 高亮显示函数guifg=Blue ctermfg=Blue

在windows上,您将创建:C:\Documents和 设置\Peter\vimfiles\after\colors\desert.vim: 突出显示注释guifg=Red ctermfg=Red 高亮显示函数guifg=Blue ctermfg=Blue

--版本6警告——如果您的Vim版本早于版本7,那么当Vim启动时,after/colors脚本将只加载一次。这 如果在.vimrc中选择配色方案,则不会有问题 文件,但如果在加载vim后更改配色方案,则 您的after/colors脚本将被忽略。这在中国不是一个问题 维姆7

以及

安装详细信息

1) 将AfterColors.vim放入~/.vim/plugin/或$HOME\vimfiles\plugin\

2) 在after/colors/.vim中创建配色方案自定义

3) 在after/colors/common.vim中创建全局定制(适用于所有配色方案)


链接:

您可以在修改
background
选项时运行命令

在vimrc中:

autocmd OptionSet background call MyFunction()

function MyFunction()
    if &background == "light"
        hi CursorLine   cterm=NONE ctermbg=254 ctermfg=NONE
    else
        hi CursorLine   cterm=NONE ctermbg=238 ctermfg=NONE
    endif
endfunction
没有经过测试,但它应该可以工作


奖励点-假设您想要自定义语法文件,例如
markdown.vim
语法文件。您将在
~/.vim/after/syntax/markdown.vim
上创建一个文件,并且可能在此文件中包含一些
if&background==…
。您将遇到相同的问题(此文件在设置
background
之前加载),您可以通过在
中添加此行来解决此问题。vimrc

hi CursorLine   cterm=NONE ctermbg=254 ctermfg=NONE
autocmd OptionSet background if exists("g:syntax_on") | syntax on | endif

有了这一行,当设置了
background
时,Vim将运行
syntax on
,这基本上会重新加载语法文件。

不起作用:-(我看到在
中加载了AfterColors.vim:scriptnames
但是在/colors/common.vim之后
似乎没有加载。看起来不错,我会尝试这个,即使我真的不再有问题了,因为我不再使用Gnome终端了(我现在使用Alacrity)