首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vim:如何完全禁用某些文件类型的语法

Vim:如何完全禁用某些文件类型的语法
EN

Stack Overflow用户
提问于 2014-09-14 11:06:45
回答 2查看 733关注 0票数 1

我正在尝试在Vim中使用autocmd禁用Markdown文件的语法。我的.vimrc中有以下内容

代码语言:javascript
复制
function! SyntaxOff()
    echom "one"
    syntax off
    echom "two"
endfunction
autocmd filetype markdown exe "call SyntaxOff()"

当我打开Markdown文件并检查:messages时,我可以看到onetwo,但语法仍然有效。如果我打开一个虚拟文件,然后打开一个Markdown文件,那么我可以看到语法被禁用。如果我打开了一个不同文件类型的文件,语法仍然是禁用的。我的猜测是,当我第一次打开Vim时,我的.vimrc中的其他东西重新启用了语法,但在函数运行后,语法被永久关闭。

所以我的问题是(1)当我直接打开Markdown文件(即不使用上面描述的策略)时,如何禁用它们的语法?(2)当我打开另一个不同文件类型的文件时,如何让Vim重新启用语法?

EN

回答 2

Stack Overflow用户

发布于 2014-09-14 14:38:23

你应该把你的auto命令放在一个检查和一个组中,否则你会设置多个auto命令(资源泄漏),Vim在长时间使用后会变慢。对于自动命令,最好使用FileTypes而不是正则表达式/匹配器。但是,在某些情况下,正则表达式是有意义的。在本例中,我认为您应该使用正则表达式来匹配*.md和markdown文件,因为Vim不会将*.md检测为markdown。

代码语言:javascript
复制
if has("autocmd")
  augroup standard
    autocmd!

    autocmd BufNewFile,BufRead *.markdown,*.md setlocal setfiletype disabled

  augroup END
endif
票数 1
EN

Stack Overflow用户

发布于 2014-09-15 21:10:37

@kev的回答向您展示了如何通过修改文件类型检测来完全禁用Markdown文件类型。

如果您想保留filetype和缩进插件,只需禁用语法,您可以:

关闭事后诸葛亮

使用以下命令创建~/.vim/after/syntax/markdown.vim

代码语言:javascript
复制
setlocal syntax=

避免开机

使用以下命令创建~/.vim/syntax/markdown.vim

代码语言:javascript
复制
if exists("b:current_syntax")
finish
endif
let b:current_syntax = "markdown"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25829710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档