我正在尝试在Vim中使用autocmd禁用Markdown文件的语法。我的.vimrc中有以下内容
function! SyntaxOff()
echom "one"
syntax off
echom "two"
endfunction
autocmd filetype markdown exe "call SyntaxOff()"当我打开Markdown文件并检查:messages时,我可以看到one和two,但语法仍然有效。如果我打开一个虚拟文件,然后打开一个Markdown文件,那么我可以看到语法被禁用。如果我打开了一个不同文件类型的文件,语法仍然是禁用的。我的猜测是,当我第一次打开Vim时,我的.vimrc中的其他东西重新启用了语法,但在函数运行后,语法被永久关闭。
所以我的问题是(1)当我直接打开Markdown文件(即不使用上面描述的策略)时,如何禁用它们的语法?(2)当我打开另一个不同文件类型的文件时,如何让Vim重新启用语法?
发布于 2014-09-14 14:38:23
你应该把你的auto命令放在一个检查和一个组中,否则你会设置多个auto命令(资源泄漏),Vim在长时间使用后会变慢。对于自动命令,最好使用FileTypes而不是正则表达式/匹配器。但是,在某些情况下,正则表达式是有意义的。在本例中,我认为您应该使用正则表达式来匹配*.md和markdown文件,因为Vim不会将*.md检测为markdown。
if has("autocmd")
augroup standard
autocmd!
autocmd BufNewFile,BufRead *.markdown,*.md setlocal setfiletype disabled
augroup END
endif发布于 2014-09-15 21:10:37
@kev的回答向您展示了如何通过修改文件类型检测来完全禁用Markdown文件类型。
如果您想保留filetype和缩进插件,只需禁用语法,您可以:
关闭事后诸葛亮
使用以下命令创建~/.vim/after/syntax/markdown.vim:
setlocal syntax=避免开机
使用以下命令创建~/.vim/syntax/markdown.vim:
if exists("b:current_syntax")
finish
endif
let b:current_syntax = "markdown"https://stackoverflow.com/questions/25829710
复制相似问题