Vimscript编程指南

检测文件类型

我们先创建一个Potion文件用来实验我们的插件。创建一个factorial.pn文件,然后把下面的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.

这段代码创建了一个简单的factorial函数,然后调用它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

如果你没有看到这样的输出,或者是有错误的话,先找出问题所在。这段代码应该是正确的。

花点时间来理解一下这些代码是怎么工作的。你随时都可以参考参考Potion。这不仅仅是对理解Vimscript代码有用,并且可以让你成为一个更好的程序员。

检测文件类型

打开factorial.pn文件,运行下面的命令:


     :set filetype?

Vim会输出filetype=,因为它现在还不知道.pn文件的类型。让我们来给它加上类型的判断。

在你的插件目录下添加ftdetect/potion.vim。添加下面的代码:


     au BufNewFile,BufRead *.pn set filetype=potion

这里创建了一个简单的autocmd:这个命令设置.pn文件的类型为potion。还是比较简单的。

注意这里我们没有像之前一样用autocmmand group,这是因为vim会自动把ftdetect/*.vim文件的内容用autocommand group来进行包装,所以你不用担心这个了。

关闭factorial.pn文件,再次打开它。现在运行之前的命令:

     
     :set filetype?

这次Vim会输出filetype=potion。当Vim启动的时候,它会加载~/.vim/bundle/potion.vim里的autocommand group,当打开factorial.pn文件的时候,这个命令就会执行,然后文件的filetype就被设置成potion。

现在,我们已经让Vim能够识别Potion文件的类型了,我们可以继续来给我们的插件添加一些更加有用的功能了。

练习

  • 阅读:help ft。不用担心,如果你什么都不明白的话。
  • 阅读:help setfiletype。
  • 修改Potion插件的ftdetect/potion.vim文件,用setfiletype命令来代替set filetype。