[英]vimrc settings apply not at start but only after sourcing
我的vimrc文件中有这些行:
set concealcursor=n
set conceallevel=3
hi AsteriskBold ctermfg=Green cterm=bold
syn match Asterisks contained "**" conceal
syn match AsteriskBold "\*\*[^*]\+\*\*" contains=Asterisks
如果我在vim中打开一个新文件,它们将适用,但是如果我打开一个已经存在的文件,则在运行:source〜/ .vimrc之前它不起作用
其他设置不过可以正确应用,我不必获取它们:
set directory=~/.vim/swapfiles//
colo torte
set tabstop=2
set autoindent
set number
我不明白为什么? 我想它们会被其他vim设置覆盖,但是如果是新文件则不会被覆盖,而且我不知道如何找到覆盖它们的设置?
例如,如果我跑步
touch test.txt
echo hello > test.txt
echo \\*\\*world\\*\\* >> test.txt
vim test.txt
我得到
1个你好
2 * *世界* *
〜
〜
〜
现在,如果我运行:verbose set conceallevel
它将输出conceallevel=3
last modification in ~/.vimrc
如果然后我运行:source ~/.vimrc
我得到
1个你好
2 世界
〜
〜
〜
如果我再次运行:verbose set conceallevel
它仍会last modification in ~/.vimrc
输出conceallevel=3
last modification in ~/.vimrc
所有这些操作都在.txt文件上完成,但是如果我在.js文件上尝试,则其工作原理完全相同。 但是,我的设置似乎不适用于.html文件,但我不在乎
终于这是可行的:
set concealcursor=n
set conceallevel=3
hi AsteriskBold ctermfg=Green cterm=bold
autocmd BufEnter * syn match Asterisks contained "**" conceal
autocmd BufEnter * syn match AsteriskBold "\*\*[^*]\+\*\*" contains=Asterisks
因为如果我编写autocmd ColorScheme * hi AsteriskBold ctermfg=Green cterm=bold
,在获取文件后它不起作用; 不知道为什么...
您的配色方案很可能清除了突出显示组AsteriskBold
(要确认这一点,请输入命令:hi AsterisksBold
)。 例如,从default
配色方案的前几行(位于:e $VIMRUNTIME/color/default.vim
):
" Remove all existing highlighting and set the defaults.
hi clear
这将清除包括AsteriskBold
在内的现有突出显示组。 一种可能的解决方案是使用自动命令触发突出显示设置:
autocmd ColorScheme * hi AsteriskBold ctermfg=Green cterm=bold
autocmd BufEnter * syn match Asterisks contained "**" conceal
autocmd BufEnter * syn match AsteriskBold "\*\*[^*]\+\*\*" contains=Asterisks
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.