vimrc设置不是在开始时应用,而是仅在采购后

时间:2018-05-03 21:22:00

标签: vim settings

我的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 * * world * *

     

     

     

现在,如果我运行:verbose set conceallevel,则输出conceallevel=3 last modification in ~/.vimrc

如果我运行:source ~/.vimrc我获得

  

1你好

     

2 世界

     

     

     

如果我再次运行:verbose set conceallevel,它仍会输出conceallevel=3 last modification in ~/.vimrc

所有这些都是在.txt文件上完成的,但如果我尝试使用.js文件,它的工作方式完全相同。但是,我的设置似乎不适用于.html文件,但我不在乎

2 个答案:

答案 0 :(得分:1)

最终有效的是:

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,那么在获取文件后它就不起作用;不知道为什么......

答案 1 :(得分:0)

您的配色方案很可能会清除您的突出显示组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