如果已經讀到了這里并且完成了所有的例子和練習,你現在對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段移動
- 外部命令
- 自動加載
- 文檔
- 發布
- 還剩下什么?