讓我們創建一個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段移動
- 外部命令
- 自動加載
- 文檔
- 發布
- 還剩下什么?