我在ubuntu的默认终端中使用vim。 我设置了两个终端配置文件:一个名为“dark”,带有颜色>内置方案> “Solarized dark”和一个名为“light”的Solarized light。
在Vim中,我喜欢突出显示光标,因此我将此命令放在vimrc
中:
hi CursorLine cterm=NONE ctermbg=254 ctermfg=NONE
这会突出显示浅灰色背景的光标线。使用Solarized Light时非常完美,但在使用Solarized Dark时则完全没有。
幸运的是,通过一些我不明白的机制,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
问题:它不起作用。光标线始终为浅灰色,
好像background
属性始终设置为"light"
。
似乎在加载vimrc
时,background
属性尚未更改。
请注意,如果我在Vim中执行source ~/.vimrc
时效果很好,则光标线会以正确的颜色突出显示。
关于如何解决这个问题的想法?
vim 7.4.1689
GNOME终端3.18.3
Ubuntu 16.04 LTS和Ubuntu 17.04
请注意我的:colorscheme <something>
中没有任何vimrc
:我通过gnome终端配置文件获得了曝光的主题。我不认为Vim“知道”我正在使用这些颜色;只是某些脚本根据我的gnome终端颜色选择设置了vim的background
变量。
答案 0 :(得分:1)
有一个名为AfterColors.vim
的vim插件允许用户在加载配色方案后自定义内容。您基本上需要将高亮度光标行语句(hi CursorLine...
)放在after/colors/common.vim
文件中。
来自AfterColors.vim脚本的文档:
允许您创建一个after / colors /脚本来自定义任何 色彩方案。
- 示例 - 如果你喜欢沙漠&#39; colorscheme,但你真的希望评论为红色,功能为蓝色,以前你会 将整个colorscheme复制到您的主目录并进行自定义。 安装此插件后,您可以创建一个要更改的小脚本 只是你想要的那些colorscheme的部分,你的确如何 对于ftplugin或语法脚本:
对于unix系统,你可以创建:〜/ .vim / after / colors / desert.vim: 突出显示评论guifg =红色ctermfg =红色 突出显示功能guifg =蓝色ctermfg =蓝色
在Windows上你会创建:C:\ Documents and 设置\彼得\ vimfiles \后\颜色\ desert.vim: 突出显示评论guifg =红色ctermfg =红色 突出显示功能guifg =蓝色ctermfg =蓝色
- VERSION 6警告 - 如果您的Vim早于版本7,那么只有在Vim启动时才会加载一次后/颜色脚本。这个 如果你在.vimrc中选择了colorscheme,那将不会有问题 文件,但如果你在加载vim后更改了colorscheme 您的后/颜色脚本将被忽略。这不是问题所在 Vim 7。
和
安装详情
1)将AfterColors.vim放在〜/ .vim / plugin /或$ HOME \ vimfiles \ plugin \
中2)在after / colors / .vim
之后创建colorscheme自定义3)在after / colors / common.vim中创建全局自定义(适用于所有colorschemes)
答案 1 :(得分:1)
修改了Rect().right
选项后,您可以运行命令。
在您的vimrc中:
background
未经测试,但可以正常工作。
加分点-假设您要自定义语法文件,例如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
在这一行中,设置autocmd OptionSet background if exists("g:syntax_on") | syntax on | endif
后,Vim将运行background
,基本上会重新加载语法文件。