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