vim腳本編程展望
回憶
- 上次我們徹底研究了vim高亮的原理
-
各種語法項syntax item
- 關鍵字keyword
- 匹配模式match
- 區域region
-
定義好了之後還可以設置鏈接成組
hi def link javaComment Comment
-
然後就可以在顏色文件中具體配色了
- 比如murphy中對於Comment的定義
hi Comment ctermfg=yellow
- 不同的語言可以有不同的語法定義
- 其實,vim也是門語言
- vimscript也是可以編程的
- 怎麼玩呢?🤔
編寫腳本
vi oeasy.vim
- 在
oeasy.vim
中寫下 echo "hello vim script"
:w
:source %
- 這就是vim程序的編寫和運行的基本方法
- vim既是編輯器,也是解釋器
- 不過現在vim9script要有一個比較具大的改變
- 這個改編還要從2014年說起
分支
- 緣起
- 2014年vim還處於7.4版
- Thiago de Arruda爲Vim提交了一個補丁,以引入多線程的功能
- 不過最終沒有采納
- 於是Thiago創建了一個分支NeoVim,並且籌集到了33萬美元的資金
- 2015年末,Thiago不再領導相關的工作
- 而且neovim的社會化程度明顯比vim高
- 提交代碼的人數多691個人
- 而且每個人都提交好多代碼
- 不過其實問題也不少
老根的演化
- vim這邊
- 基本上還是非常穩妥
- 或者說比較緩慢的運動着
- 基本上是brammool一個人的世界
- 有其他的代碼提供者
- 但是都是非常少的代碼量
- 自從2018年開始,neovim的事情無疑刺激了brammool
- github的提交變得非常活躍
- 2016年9月12日,brammool提交了vim8
- vim8支持了異步和timer
vim9
- Bram Mool是真勤勞啊
- 誰看得出這位61年出生的老大爺已經進入了花甲之年
- vim9的項目已經成了只讀的檔案
- 現在的新提交的東西都在vim裏面
- 不過我們可以從一些方面看到他對於vim9的企圖心
vim9Script
- 這個新的腳本要加速運行
-
就要變更原來的一些模式
- 函數的參數只是名字,而不是來自於字典的東西,類似a:000列表之類的
- 本地變量不再放在一個字典裏
- 異常處理的細節
- 速度能有多快呢?
- 感覺已經是腳本語言的極限了
- 據說函數是要編譯成本地的指令的
- 而且要義無反顧地做一個不向前兼容的vim9script!!!
- 而且可以使用類庫
- 總之,我們現在的腳本可能會發生改變
- 我們還是等vim9script發佈出來之後再講吧
預告
-
關於vim9現在有個預告
- 我感覺這腳本離不開vim
- 而且一定可以很方便地使用緩存buf、寄存器reg、標籤tab之類的東西
- 雙方已經上場對戰
- 也許會殺出個第三方比如SpaceVim之類的
- 本教程先告一段落
總結
- vim歷史悠久
- neovim前來挑戰
- vim及時調整
- vim9script令人期待
- 到底什麼時候更新
- 要等vim9script出來🤔
- 之後再說!