让我们创建一个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`。