在前四十来章中,我们讲解了许多基础方面的内容。 在本书的最后部分,我们将尝试从零开始为一门语言创造Vim插件。
这不是个适合懦夫的游戏。这将需要你竭尽全力。
如果你现在就想退出,那确实也不坏!你已经学到了如何在`~/.vimrc`里改善你的生活, 还有如果修复别人的插件里的bugs。
有"这就够了,我不想虚掷光阴于创造一个我将不会使用的插件"这种想法并不可耻。 现实一点。如果你不想创造一个自己想用的插件,现在就可以离开,到你想要的时候再回来吧。
如果你_真的_想要继续,确保你可以挤出一些时间。本书剩余部分将会显得困难, 而且我会假定你真的想_学点东西_,而不是仅仅慵懒地一章章翻过去。
## Potion
我们创造的插件将为[Potion](http://fogus.github.com/potion/index.html)这门语言提供支持。
Potion是由`Why the lucky stiff`在隐于江湖之前(before his disappearance)创建的一门玩具语言。 它非常的简单,所以我们就拿它一试身手。
Potion跟[Io](http://iolanguage.com/)很像,同时又借鉴了Ruby,Lua以及其他语言。如果你未曾玩过Io,它可能看上去略古怪。 我强烈推荐你花上至少一两个小时的时间玩玩Potion。在现实生活中你不会用它, 但是它可能会改变你思考的方式并带给你新的思想。
Potion的当前实现相当地粗糙。举个例子:如果你犯了语法错误,它通常会还你段错误。 不要太纠结于此。我会给你许多可用的代码示范,这样你就能更关注于Vimscript本身而非Potion。
我们的目标不是学习Potion(尽管那也挺有趣)。 我们的目标是以Potion作为一个小例子来体验写一个完整的Vim插件的方方面面。
## 练习
下载并安装[Potion](http://fogus.github.com/potion/index.html)。这个就要你自己动手了。它应该会比较简单的。
确保你可以在Potion解释器和以`.pn`文件的形式运行小册子里的第一个示例代码。 如果解释器貌似不能工作,看[这个issue](https://github.com/fogus/potion/issues/12)来查找可能的原因。
- 前言
- 鸣谢
- 预备知识
- 打印信息
- 设置选项
- 基本映射
- 模式映射
- 精确映射
- Leaders
- 编辑你的Vimrc文件
- Abbreviations
- 更多的Mappings
- 锻炼你的手指
- 本地缓冲区的选项设置和映射
- 自动命令
- 本地缓冲区缩写
- 自动命令组
- Operator-Pending映射
- 更多Operator-Pending映射
- 状态条
- 负责任的编码
- 变量
- 变量作用域
- 条件语句
- 比较
- 函数
- 函数参数
- 数字
- 字符串
- 字符串函数
- Execute命令
- Normal命令
- 执行normal!
- 基本的正则表达式
- 实例研究:Grep 运算符(Operator),第一部分
- 实例研究:Grep运算符(Operator),第二部分
- 实例研究:Grep运算符(Operator),第三部分
- 列表
- 循环
- 字典
- 切换
- 函数式编程
- 路径
- 创建一个完整的插件
- 旧社会下的插件配置方式
- 新希望:用Pathogen配置插件
- 检测文件类型
- 基本语法高亮
- 高级语法高亮
- 更高级的语法高亮
- 基本折叠
- 高级折叠
- 段移动原理
- Potion段移动
- 外部命令
- 自动加载
- 文档
- 发布
- 还剩下什么?