探测文件类型

创建一个 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.

这段代码创建了一个简单的阶乘函数,并调用了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 无关紧要,但是能让你成为更好的程序员。

探测 Potion 文件

在 Vim 中打开 factorial.pn 文件,并运行以下命令:

:set filetype?

Vim 会显示 filetype= 因为它目前还不知道 .pn 文件的类型是什么。让我们来解决这个问题。

在插件仓库中创建 ftdetect/potion.vim 文件。把以下内容添加进去:

au BufNewFile,BufRead *.pn set filetype=potion

这创建了一个简单的自动命令:能把 .pn 文件的类型设置为 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

原文地址:http://learnvimscriptthehardway.stevelosh.com/chapters/44.html