国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

Vimscript 條件語句

2018-02-24 16:02 更新

每種編程語言都有產(chǎn)生分支流程的方法,在Vimscript中,這是用if語句實(shí)現(xiàn)的。?if語句是Vimscript中產(chǎn)生分支的基本方法。這里沒有類似Ruby中的unless語句, 所以代碼中所有的判斷都需要用if實(shí)現(xiàn)。

在談?wù)揤im的if語句之前,我們需要花費(fèi)額外的時(shí)間講講語法,這樣可以在同一頁里講完它。

多行語句

有時(shí)你在一行里寫不下所需的Vimscript。在講到自動(dòng)命令組時(shí),我們已經(jīng)遇到過這樣的例子了。 這里是我們之前寫過的代碼:

:augroup testgroup
:    autocmd BufWrite * :echom "Baz"
:augroup END

在理想的情況下,你可以分開成三行來寫。但在手工執(zhí)行命令的時(shí)候,這樣寫就太冗長了。 其實(shí),你可以用管道符(|)來隔開每一行。執(zhí)行下面的命令:

:echom "foo" | echom "bar"

Vim會(huì)把它當(dāng)作兩個(gè)獨(dú)立的命令。如果你看不到兩行輸出,執(zhí)行:messages查看消息日志。

在本書的剩余部分,當(dāng)你想手工執(zhí)行一個(gè)命令,卻對輸入新行和冒號感到心煩時(shí),試試用管道隔開, 在一行里寫完。

If的基本用法

現(xiàn)在讓我們回到正題上來,執(zhí)行下面的命令:

:if 1
:    echom "ONE"
:endif

Vim將顯示ONE,因?yàn)檎麛?shù)1是"truthy"?,F(xiàn)在執(zhí)行下面命令:

:if 0
:    echom "ZERO"
:endif

Vim將_不_顯示ZERO,因?yàn)檎麛?shù)0是"falsy"。讓我們看看對字符串是怎么處理的。執(zhí)行下面命令:

:if "something"
:    echom "INDEED"
:endif

結(jié)果可能讓你吃驚。Vim_不會(huì)_把非空字符串當(dāng)作"truthy",所以什么也沒有顯示。

讓我們打破沙鍋問到底。執(zhí)行下面的命令:

:if "9024"
:    echom "WHAT?!"
:endif

這次Vim_會(huì)_顯示了!為什么會(huì)這樣?

為了搞懂發(fā)生了什么,執(zhí)行下面三個(gè)命令:

:echom "hello" + 10
:echom "10hello" + 10
:echom "hello10" + 10

第一個(gè)命令使得Vim輸出10,第二個(gè)命令輸出20,第三個(gè)則又一次輸出10!

在探究了所有的命令后,對于Vimscript我們可以得出結(jié)論:

  • 如有必要,Vim將強(qiáng)制轉(zhuǎn)換變量(和字面量)的類型。在解析10 + "20foo"時(shí),Vim將把"20foo"轉(zhuǎn)換成一個(gè)整數(shù)(20)然后加到10上去。
  • 以一個(gè)數(shù)字開頭的字符串會(huì)被強(qiáng)制轉(zhuǎn)換成數(shù)字,否則會(huì)轉(zhuǎn)換成0
  • 在所有的強(qiáng)制轉(zhuǎn)換完成,當(dāng)if的判斷條件等于非零整數(shù)時(shí),Vim會(huì)執(zhí)行if語句體。

Else 和 Elseif

Vim,像Python一樣,支持"else"和"else if"分句。執(zhí)行下面的命令:

:if 0
:    echom "if"
:elseif "nope!"
:    echom "elseif"
:else
:    echom "finally!"
:endif

Vim輸出finally!,因?yàn)榍懊娴呐袛鄺l件都等于0,而0代表falsy。

練習(xí)

來一杯啤酒,安撫自己因Vim中的字符串強(qiáng)制轉(zhuǎn)換而受傷的心。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號