ubuntu终端中的vim:“;背景“;属性在加载vimrc后设置
我在ubuntu的默认终端中使用vim。 我设置了两个终端配置文件:一个名为“暗”的配置文件,带有颜色>内置方案>“日光化暗”,另一个名为“光”的配置文件,带有日光化光 在Vim中,我希望光标线高亮显示,因此我将此命令放在我的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
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.1689GNOME终端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)