我尝试在Vim中使用autocmd
禁用Markdown文件的语法。我的.vimrc
:
function! SyntaxOff()
echom "one"
syntax off
echom "two"
endfunction
autocmd filetype markdown exe "call SyntaxOff()"
当我打开Markdown文件并检查:messages
时,我可以看到one
和two
,但语法仍然存在。如果我打开一个虚拟文件然后打开一个Markdown文件,那么我可以看到该语法被禁用。如果我然后打开不同文件类型的文件,则仍然禁用语法。我的猜测是我的.vimrc
中的其他内容在我第一次打开Vim时重新启用了语法,但是在函数运行之后语法被永久关闭。
所以我的问题是(1)当我直接打开Markdown文件(即不使用上述操作)时,如何禁用Markdown文件的语法? (2)当我打开另一个不同文件类型的文件时,如何让Vim重新启用语法?
答案 0 :(得分:1)
您应该将自动命令包装在支票中以及组中,否则您将设置多个自动命令(资源泄漏),并且Vim将在长时间使用后减速。对于自动命令,使用FileTypes而不是正则表达式/匹配器也更好。但是,在某些情况下,正则表达式是有意义的。在这种情况下,我认为你想使用正则表达式来匹配* .md以及markdown文件,因为Vim没有将* .md检测为降价。
if has("autocmd")
augroup standard
autocmd!
autocmd BufNewFile,BufRead *.markdown,*.md setlocal setfiletype disabled
augroup END
endif
答案 1 :(得分:1)
@kev的回答显示了如何通过修改文件类型检测来完全禁用Markdown文件类型。
如果你想保留文件类型和缩进插件,并且只是禁用语法,你可以:
使用以下内容创建~/.vim/after/syntax/markdown.vim
setlocal syntax=
使用以下内容创建~/.vim/syntax/markdown.vim
if exists("b:current_syntax")
finish
endif
let b:current_syntax = "markdown"