Vimscript 检测文件类型
让我们创建一个Potion文件作为插件的测试样本。
factorial = (n):
total = 1
n to 1 (i):
total *= i.
total.
10 times (i):
i string print
'! is: ' print
factorial (i) string print
"\n" print.
这个代码创建了一个简单的阶乘函数并调用它10次,逐次输出结果。继续前进并用potion factorial.pn
执行它。 输出结果应该像这样:
0! is: 0
1! is: 1
2! is: 2
3! is: 6
4! is: 24
5! is: 120
6! is: 720
7! is: 5040
8! is: 40320
9! is: 362880
如果你得不到这个输出,或者你得到一个错误,停下来并排查问题所在。 这个代码应该会正常工作的。
这跟学习Vimscript没有关系,不过它能让你成为更好的程序猿。
检测Potion文件
用Vim打开factorial.pn
并执行下面命令:
:set filetype?
Vim将显示filetype=
,因为它还不认识.pn
文件。让我们解决这个问题。
在你的插件的repo中创建ftdetect/potion.vim
。在它里面加入下面几行:
au BufNewFile,BufRead *.pn set filetype=potion
这创建了一个单行自动命令:一个设置.pn
文件的filetype为potion
的命令。很简明吧。
注意我们_没有_像之前经常做的那样使用一个自动命令组。 Vim自动替你把ftdetect/*.vim
文件包装成自动命令组,所以你不需要操心。
关闭factorial.pn
并重新打开它。现在再执行前面的命令:
:set filetype?
这次Vim显示filetype=potion
。当Vim启动时,它加载~/.vim/bundle/potion/ftdetect/potion.vim
里的自动命令组, 而当它打开factorial.pn
时,自动命令起效,设置filetype
为potion
。
既然已经让Vim识别了Potion文件,我们可以继续前进来做些有用的东西了。
练习
阅读:help ft
。不要担心你看不懂里面的内容。
阅读:help setfiletype
。
修改Potion插件中的ftdetect/potion.vim
。 用setfiletype
代替set filetype
。