让我们创建一个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`。
- 前言
- 鸣谢
- 预备知识
- 打印信息
- 设置选项
- 基本映射
- 模式映射
- 精确映射
- Leaders
- 编辑你的Vimrc文件
- Abbreviations
- 更多的Mappings
- 锻炼你的手指
- 本地缓冲区的选项设置和映射
- 自动命令
- 本地缓冲区缩写
- 自动命令组
- Operator-Pending映射
- 更多Operator-Pending映射
- 状态条
- 负责任的编码
- 变量
- 变量作用域
- 条件语句
- 比较
- 函数
- 函数参数
- 数字
- 字符串
- 字符串函数
- Execute命令
- Normal命令
- 执行normal!
- 基本的正则表达式
- 实例研究:Grep 运算符(Operator),第一部分
- 实例研究:Grep运算符(Operator),第二部分
- 实例研究:Grep运算符(Operator),第三部分
- 列表
- 循环
- 字典
- 切换
- 函数式编程
- 路径
- 创建一个完整的插件
- 旧社会下的插件配置方式
- 新希望:用Pathogen配置插件
- 检测文件类型
- 基本语法高亮
- 高级语法高亮
- 更高级的语法高亮
- 基本折叠
- 高级折叠
- 段移动原理
- Potion段移动
- 外部命令
- 自动加载
- 文档
- 发布
- 还剩下什么?