W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
到目前為止我們已經講完了單行命令。在本書后面的三分之一個章節(jié)中將會把Vim腳本當作一個腳本語言。這部分東西不會像前面的你學到的東西一樣馬上可以學以致用,不過這是為本書的最后一部分打基礎,最后一部分會講解創(chuàng)建一個插件所需要的各個方面的東西。
我們開始吧。我們首先要了解的是變量。執(zhí)行下面的命令。
:let foo = "bar"
:echo foo
Vim會顯示bar
。foo
現在是一個變量,我們將一個字符串"bar"
賦值給它。現在執(zhí)行這些命令:
:let foo = 42
:echo foo
Vim會顯示42
,因為我們將foo
賦值為整型42
。
從這些小例子似乎可以看出Vim腳本是動態(tài)類型的。事實并非如此,我們之后會說明。
你可以通過一種特殊語法將_選項_作為變量來設置。執(zhí)行下面的命令:
:set textwidth=80
:echo &textwidth
Vim會顯示80
。在名稱的前面加一個&
符號是告訴Vim你正在引用這個選項,而不是在使用一個名稱剛好相同的變量。
我們來看下Vim是怎么處理布爾選項的。執(zhí)行下面的命令:
:set nowrap
:echo &wrap
Vim顯示0
。然后再試試這些選項:
:set wrap
:echo &wrap
這次Vim會顯示1
。這些輸出很明確提示Vim會將整型0
當作"false",整型1
當作"true"。我們可以更進一步假設Vim會將所有的非0值整型當作"truthy",而事實確實如此。
我們也可以使用let
命令來_設置_作為變量的選項。執(zhí)行下面的命令:
:let &textwidth = 100
:set textwidth?
Vim會顯示textwidth=100
。
既然set
可以搞定選項的設置,那我們?yōu)槭裁催€要用let
呢?執(zhí)行下面的命令:
:let &textwidth = &textwidth + 10
:set textwidth?
這一次Vim顯示textwidth=110
。當你用set
來設置某個選項,你只能給它設置一個常量值。當你使用let
并將它作為一個變量來設置,你可以使用Vim腳本的所有強大之處來決定它的值。
如果你想將某個選項作為變量來設置它的_本地_值,而不是_全局_值,你需要在變量名前面加前綴。
在兩個分隔的窗口中分別打開兩個文件。執(zhí)行下面的命令:
:let &l:number = 1
然后切換到另一文件,然后再執(zhí)行下面的命令:
:let &l:number = 0
注意第一個窗口會出現行號,而第二個沒有。
你也可以將_寄存器_當作變量來讀取和設置。執(zhí)行下面的命令:
:let @a = "hello!"
現在把光標放到文本中的某個地方然后敲擊"ap
。這個命令會告訴Vim“在這里粘貼寄存器a
中的內容”。我們設置了這個寄存器的內容,所以Vim會將hello!
粘貼到你的文本中。
還可以讀寄存器的內容。執(zhí)行下面的命令:
:echo @a
Vim會輸出hello!
。
在你的文件中選擇一個單詞然后用y
復制,再執(zhí)行下面的命令:
:echo @"
Vim會輸出你剛才復制的單詞。"
寄存器是“未命名(unnamed)”寄存器,在復制的時候沒有指定寄存器的文本都會放到這里。
在你的文件中執(zhí)行搜索/someword
,然后執(zhí)行下面的命令:
:echo @/
Vim會輸出你剛剛使用的搜索模式。這樣你就可以通過編程來讀_和修改_當前的搜索模式,有些時候這會很有用。
檢查你的~/.vimrc
文件,然后將其中的一些set
和setlocal
命令替換為它們的let
形式。記住布爾選項仍然需要被設置為某個值。
嘗試將某個布爾選項設置為0和1之外的值,例如wrap
。當你將它設置為一個不同的數字時會怎么樣?如果設置為字符串又會是什么情況?
回到你的~/.vimrc
文件,然后恢復所有的修改。在set
可以搞定的時候,永遠都不要用let
,這是因為let
更難于閱讀。
閱讀:help registers
,然后看看你可以進行讀和寫的寄存器列表。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯系方式:
更多建議: