vimrc autocmd: 不等于文件类型
vimrc autocmd: not-equal Filetype in
如果加载了特定文件类型的文件,我可以使用 autocmd 将我的 cmd 设置为 运行。例如 python:
autocmd FileType python make me happy with python
但是,如果加载的文件不是特定类型,有什么方法可以使我的 cmd 变为 运行?类似于:
autocmd FileType !python make me happy without python
上面的示例不起作用,autocmd!
将删除 autocmd。
有什么建议吗?谢谢
您可以创建一个由所有 (*
) 文件类型触发的 autocmd
,然后调用一个函数。
在函数中,您可以勾选ft
选项(&ft
)来决定对特定文件类型应该做什么。在那里,您可以使用 &ft
.
的值执行任何匹配逻辑
有几种可能:
- 最简单的方法是调用一个函数并让您的函数检查文件类型(如果文件类型为 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
(最后一部分未经测试,应该说明为什么通常使用其他任何可能性)。
如果加载了特定文件类型的文件,我可以使用 autocmd 将我的 cmd 设置为 运行。例如 python:
autocmd FileType python make me happy with python
但是,如果加载的文件不是特定类型,有什么方法可以使我的 cmd 变为 运行?类似于:
autocmd FileType !python make me happy without python
上面的示例不起作用,autocmd!
将删除 autocmd。
有什么建议吗?谢谢
您可以创建一个由所有 (*
) 文件类型触发的 autocmd
,然后调用一个函数。
在函数中,您可以勾选ft
选项(&ft
)来决定对特定文件类型应该做什么。在那里,您可以使用 &ft
.
有几种可能:
- 最简单的方法是调用一个函数并让您的函数检查文件类型(如果文件类型为 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
(最后一部分未经测试,应该说明为什么通常使用其他任何可能性)。