如果已经读到了这里并且完成了所有的例子和练习,你现在对Vimscript基础的掌握就很牢固了。 不要担心,还有_许多_东西需要学呢!
如果你求知若渴,这里还有一些东西值得你去探索。
## 配色方案
在本书中我们给Potion文件添加了语法高亮。作为硬币的另一面,我们也可以创建配色方案来决定每种语法元素的颜色。
制作Vim的配色方案非常简单直白,甚至有点重复。阅读`:help highlgiht`来学习基础知识。 你可能想要看看一些内置的配色方案来看他们怎么组织文件的。
如果你渴望挑战,看看我自己的[灰太狼](https://github.com/sjl/badwolf/blob/master/colors/badwolf.vim)配色方案来了解我是怎么用Vimscript来为我简化定义及维护工作的。 注意"palette"字典和`HL`函数,它们动态地生成`highlight`命令。
## Command命令
许多插件允许用户使用键映射和函数调用来交互,但有一些偏好使用Ex命令。 举个例子,[Fugitive](https://github.com/tpope/vim-fugitive)插件创建类似`:Gbrowse`和`:Gdiff`并把调用它们的方式留给用户定制。
像这样的命令是通过`:command`命令创建的。阅读`:help user-commands`来学习怎样给自己制作一个。 你应该已经学会了足够的Vimscript知识来帮助自己理解Vim文档,并以此来学习新的命令。
## 运行时路径
在本书中,关于Vim怎么加载某个文件时,我都是用"使用Pathogen"应付过去的。 鉴于你已经懂得了许多Vimscript知识,你可以阅读`:help runtimepath`并查看[Pathogen源代码](https://github.com/tpope/vim-pathogen/blob/master/autoload/pathogen.vim) 来找出幕后隐藏的真相。
## Omnicomplete
Vim提供了许多不同的方法来补全文本(浏览`:help ins-completion`)。 大多数都很简单,但其中最强大的是"omnicomplete", 它允许你调用一个自定义的Vimscript函数来决定你想到的各种补全方式。
当你决定对omnicomplete一探究竟,你可以从`:help omnifunc`和`:help coml-omni`开始你的征途。
## 编译器支持
在我们的Potion插件中,我们创建了一些编译并执行Potion文件的映射。 Vim提供了更深入的支持来跟编译器交互,包括解析编译器错误并生成一个整洁的列表让你跳转到对应的错误。
如果你对此感兴趣,你可以从通读整篇`:help quickfix.txt`开始深入。 不过,我得提醒你`errorformat`不适合心脏虚弱的人阅读。
## 其他语言
这本书专注于Vimscript,但Vim也提供了其他语言的接口,比如Python, Ruby, 和Lua。 这意味着如果不喜欢Vimscript,你可以使用其他语言拓展Vim。
当然还是需要了解Vimscript来编辑你的`~/.vimrc`,和理解Vim提供给其他语言的API。 但使用一个替代语言可能是从Vimscript的局限之处解放出来的好办法,尤其在写大型插件的时候。
如果你想了解更多用特定语言拓展Vim,查看下列对应的帮助文档:
* `:help Python`
* `:help Ruby`
* `:help Lua`
* `:help perl-using`
* `:help MzScheme`
## Vim文档
作为最后的部分,这里列出了一些Vim帮助条目,它们非常有用,有趣,有道理,或者仅仅是好玩(排名不分先后):
* `:help various-motions`
* `:help sign-support`
* `:help virtualedit`
* `:help map-alt-keys`
* `:help error-messages`
* `:help development`
* `:help tips`
* `:help 24.8`
* `:help 24.9`
* `:help usr_12.txt`
* `:help usr_26.txt`
* `:help usr_32.txt`
* `:help usr_42.txt`
## 练习
去为你想要的功能写一个Vim插件,向全世界分享你的成果!
- 前言
- 鸣谢
- 预备知识
- 打印信息
- 设置选项
- 基本映射
- 模式映射
- 精确映射
- Leaders
- 编辑你的Vimrc文件
- Abbreviations
- 更多的Mappings
- 锻炼你的手指
- 本地缓冲区的选项设置和映射
- 自动命令
- 本地缓冲区缩写
- 自动命令组
- Operator-Pending映射
- 更多Operator-Pending映射
- 状态条
- 负责任的编码
- 变量
- 变量作用域
- 条件语句
- 比较
- 函数
- 函数参数
- 数字
- 字符串
- 字符串函数
- Execute命令
- Normal命令
- 执行normal!
- 基本的正则表达式
- 实例研究:Grep 运算符(Operator),第一部分
- 实例研究:Grep运算符(Operator),第二部分
- 实例研究:Grep运算符(Operator),第三部分
- 列表
- 循环
- 字典
- 切换
- 函数式编程
- 路径
- 创建一个完整的插件
- 旧社会下的插件配置方式
- 新希望:用Pathogen配置插件
- 检测文件类型
- 基本语法高亮
- 高级语法高亮
- 更高级的语法高亮
- 基本折叠
- 高级折叠
- 段移动原理
- Potion段移动
- 外部命令
- 自动加载
- 文档
- 发布
- 还剩下什么?