在前四十來章中,我們講解了許多基礎方面的內容。 在本書的最后部分,我們將嘗試從零開始為一門語言創造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段移動
- 外部命令
- 自動加載
- 文檔
- 發布
- 還剩下什么?