首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Vim在所有文件类型上运行autocmd

Vim在所有文件类型上运行autocmd
EN

Stack Overflow用户
提问于 2011-06-28 01:45:08
回答 5查看 17.4K关注 0票数 89

我有一个Vim autocmd,它可以在写入之前删除文件中的尾随空格。我希望这几乎100%的时间,但有一些文件类型,我希望它禁用。传统的做法是在逗号分隔的列表中列出您希望autocmd运行的文件类型,例如:

代码语言:javascript
复制
autocmd BufWritePre *.rb, *.js, *.pl

但在这种情况下,这将是繁重的。

是否有一种方法可以将autocmd模式与除与模式匹配的文件以外的所有文件进行匹配?我在文档中找不到与NOT matcher等同的东西。

EN

回答 5

Stack Overflow用户

发布于 2012-05-02 16:58:30

单行方式的另一种选择:

代码语言:javascript
复制
let blacklist = ['rb', 'js', 'pl']
autocmd BufWritePre * if index(blacklist, &ft) < 0 | do somthing you like

然后,您可以对除黑名单中的文件类型以外的所有文件类型执行您喜欢的操作。

票数 64
EN

Stack Overflow用户

发布于 2011-06-28 02:13:15

一个不错的方法是将一个文件类型的局部变量设置为true。然后,如果该变量为false (如果为其他所有内容设置),或者如果该变量根本不存在(不需要预先设置),则设置自动命令。

代码语言:javascript
复制
autocmd BufWritePre *.foo let b:foo=true

if !exists("b:foo")
    autocmd ...
endif

基于注释更改了变量前缀

票数 17
EN

Stack Overflow用户

发布于 2021-05-10 07:38:05

您可以在相同的regexp上执行except:

代码语言:javascript
复制
autocmd BufWritePre *\(.out\|.diffs\)\@<! <your_command>

这将对除.out.diffs之外的所有文件扩展名执行<your_command>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6496778

复制
相关文章

相似问题

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