首页 > 解决方案 > vimrc 设置不是在开始时应用,而是在采购之后应用

问题描述

我的 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它仍然输出conceallevel=3 last modification in ~/.vimrc

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

标签: vimsettings

解决方案


最后是这样的:

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它不起作用事件;不知道为什么...


推荐阅读