vimrc autocmd:不等于Filetype in

时间:2015-03-03 08:42:27

标签: vim

如果加载了特定文件类型的文件,我可以使用autocmd使我的cmd运行。例如对于python:

autocmd FileType python make me happy with python

但如果加载的文件不是特定类型,有没有办法让我的cmd运行?类似的东西:

autocmd FileType !python make me happy without python

上面的示例不起作用,autocmd!将删除autocmd。

有什么建议吗?感谢。

2 个答案:

答案 0 :(得分:6)

有几种可能性:

  • 简单的方法是调用函数并使函数检查文件类型(如果文件类型是python,则中止)。
  • 另一种方法是为python文件类型设置一个标志,让你的函数检查标志。
  • 使用*模式并仅在检查文件类型的if条件内调用您的代码(类似于此): autocmd Filetype * if &ft!="python"|put your code here|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] :put your code here

(最后一部分未经测试,应该说明,为什么通常使用任何其他可能性。)

答案 1 :(得分:3)

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

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