繁体   English   中英

vimrc设置不适用于开始,仅适用于采购之后

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM