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