vimrc自动命令:Filetype不等于

6

我可以使用自动命令(autocmd)来使我的cmd在加载特定文件类型的文件时运行。例如对于Python:

autocmd FileType python make me happy with python

但是是否有办法使我的cmd在加载的文件不是特定类型时运行?类似于:
autocmd FileType !python make me happy without python

上面的示例无效,使用autocmd!将删除自动命令。
有什么建议吗?谢谢。
2个回答

16
有几种可能性:
  • 简单的方法是调用一个函数并让你的函数检查文件类型(如果文件类型是Python,则中止程序)。
  • 另一种方法是为Python文件类型设置标志,并使您的函数检查该标志。
  • 使用*模式,并仅在检查文件类型的if条件内调用您的代码(类似于此):autocmd Filetype * if &ft!="python"|放置您的代码|endif
  • 困难的方法是创建一个不匹配Python的模式。像这样的东西应该可以做到::autocmd FileType [^p],[^p][^y],[^p][^y][^t],[^p][^y][^t][^h],[^p][^y][^t][^h][^o],[^p][^y][^t][^h][^o][^n] :放置您的代码
(最后一部分未经测试,应说明通常使用任何其他可能性的原因)。

谢谢。我选择了第三个选项,因为这对我来说是最容易的方式。 - shved

4

您可以创建一个由所有(*)文件类型触发的autocmd,然后调用函数。

在函数中,您可以检查ft选项(&ft)以决定针对特定文件类型应该执行什么操作。在那里,您可以使用&ft的值进行任何匹配逻辑。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接