標籤:
學習vim總是看到各路高手都在實現自己的外掛程式,看得我直流口水,也想自己編寫vim外掛程式,於是乎我也開幹。那就從第一個指令碼開始吧,開始掌控自己的vim。
我們首先要問的是從哪裡開始學起,我第一步就搜尋各種資料,但是搜尋歸搜尋,最終還是要去看文檔的。在google的過程中,我發現了下面的協助命令,就開始了我的學習之路,所謂取人魚不如取人漁。
:help vim-script-intro:h vim-script-intro
到這個協助文檔的頂部,你會看到這個標題:Write a Vim script,這不正是我想找的東西嘛。下面就來看vim提供的第一個指令碼,在寫指令碼之前,要先建立一個指令碼。
~$ touch first.vim
~$ vim first.vim
說明:以:開始的是在vim中輸入的命令,以~$開始的是linux下的命令,如果你還沒有用linux,那還要去補充一下linux知識哦,本文是基於linux寫的哦,當然在windows下使用linux,就顯得不夠專業了,開玩笑了~~
好了,下面開始寫指令碼吧,vim提供的第一個樣本:
:let i = 1:while i < 5: echo "count is" i: let i += 1:endwhile
“:”可以省略,只有當你執行一個命令的時候才是必須的。指令碼寫好了,可是怎麼執行呢?在vim裡面執行下面命令
:source ~/first.vim
~/就是只目前使用者的目錄了。輸出如下:
count is 1count is 2count is 3count is 4
我覺得比較可惜的是教程的編寫者居然沒有用helloworld!
如果文章到這裡就結束了,我也覺得沒必要寫了,直接看vim的教程就好了,這也是我第一次開始深入學習vim,以前都是知道怎麼用就好了。我覺得這裡可以更加深入的學習,留著這篇博文將來也好總結了嘛。
我們先來解釋一下這段代碼。let是將一個值賦給一個變數,即將1賦值給i,一般的文法如下:
:let {variable} = {expression}
我們輸入下面命令,來查看let的詳細說明:
:h let
還是奉行以文檔為主的宗旨,如果哪天你出現一個問題或者需求,google了半天沒找到,你就得老老實實的去翻文檔了,因為文檔是最好的學習資料,勝過了任何教程。
:let {var-name} = {expr1}
將一個運算式的值賦給一個內部變數,{var-name}的類型由{expr1}決定,如果{var-name}不存在,就會建立一個變數。
:let {var-name}[{idx}] = {expr1}
如果{var-name}是一個序列,可以對序列中的某個變數進行賦值,我們建立一個vim指令碼:let.vim
let list = [0,1,2,3] "整個序列賦值echo listlet list[0] = 1 + 2 "運算式let list[1] = 2let list[2] = 3 * 4let list[3] = 5/2echo list echo list[2]
接下來我們看let是如何操作二維序列的
:let {var-name}[{idx1}:{idx2}] = {expr1}
這時候{expr1}可以是一個序列,我們可以給一個序列一個序列的賦值,也可以幾個序列同時賦值,可以對其中的一個值進行賦值。
let list1 = [[0,1,2],[3,4,5],[6,7,8]]echo list1echo list1[0:1]echo list1[0]let list1[0] = [9,10,11]echo list1let list1[0][0] = 0echo list1let list1[0] = [‘ww‘,‘q‘,‘e‘]echo list1
更多let相關的資訊,查看vim的協助文檔。
代碼託管:https://github.com/solomon5926/vim-script
【VIM001】編寫第一個vim指令碼