W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
如果從未在Vim里使用過代碼折疊,你不知道你都錯(cuò)過了什么。 閱讀:help usr_28
并花費(fèi)時(shí)間在日常工作中使用它。 一旦到了銘記于指的程度,你就可以繼續(xù)本章了。
Vim支持六種不同的決定如何折疊你的文本的折疊類型。
你手動(dòng)創(chuàng)建折疊并且折疊將被Vim儲(chǔ)存在內(nèi)存中。 當(dāng)你關(guān)閉Vim時(shí),它們也將一并煙消云散,而下次你編輯文件時(shí)將不得不重新創(chuàng)建。
在你把它跟一些自定義的創(chuàng)建折疊的映射結(jié)合起來時(shí),這種方式會(huì)很方便。 在本書中,我們不會(huì)這么做,但當(dāng)你想這么做的時(shí)候,它會(huì)幫上忙。
Vim基于特定的字符組合折疊你的代碼。
這些字符通常放置于注釋中(比如// {{{
), 不過在有些語(yǔ)言里,你可以使用該語(yǔ)言自己的語(yǔ)法代替,比如javascript的{
和}
。
純粹為了你的編輯器,用注釋割裂你的代碼看上去有點(diǎn)丑,但好處是你可以定制特定的折疊。 如果你想以特定的方式組織一個(gè)大文件,這個(gè)類型將是非常棒的選擇。
在diff文件時(shí)使用該特定的折疊類型。我們不會(huì)討論它,因?yàn)閂im會(huì)自動(dòng)使用它。
這讓你可以用自定義的Vimscript來決定折疊的位置。它是最為強(qiáng)大的方式,不過也需要最繁重的工作。 下一章我們將講到它。
Vim使用你的代碼的縮進(jìn)來折疊。同樣縮進(jìn)等級(jí)的代碼折疊到一塊,空行則被折疊到周圍的行一起去。
這是最便捷的方式,因?yàn)槟愕拇a已經(jīng)縮進(jìn)過了;你僅僅需要啟動(dòng)它。 這將是我們用來折疊Potion代碼的第一種方式。
讓我們?cè)僖淮慰匆幌翽otion實(shí)例代碼:
factorial = (n):
total = 1
n to 1 (i):
total *= i.
total.
10 times (i):
i string print
'! is: ' print
factorial (i) string print
"\n" print.
函數(shù)體和循環(huán)體已經(jīng)縮進(jìn)好了。這意味著我們可以不怎么費(fèi)力就能實(shí)現(xiàn)一些基本的縮進(jìn)。
在我們開始之前,在total *= i
上添加一個(gè)注釋,這樣我們就有一個(gè)供測(cè)試的多行內(nèi)部塊。 你將在做練習(xí)的時(shí)候?qū)W到為什么我們需要這么做,但暫時(shí)先信任我。現(xiàn)在文件看上去就像這樣:
factorial = (n):
total = 1
n to 1 (i):
# Multiply the running total.
total *= i.
total.
10 times (i):
i string print
'! is: ' print
factorial (i) string print
"\n" print.
在你的Potion插件的版本庫(kù)下創(chuàng)建一個(gè)ftplugin
文件夾,然后在里面創(chuàng)建一個(gè)potion
文件夾。 最后,在_potion
文件夾_里面創(chuàng)建一個(gè)folding.vim
文件。
不要忘了每次Vim設(shè)置一個(gè)buffer的filetype
為potion
時(shí),它都會(huì)執(zhí)行這個(gè)文件中的代碼。 (因?yàn)樗挥谝粋€(gè)叫potion
的文件夾)
將所有的折疊相關(guān)的代碼放在同一個(gè)文件顯然是一個(gè)好主意,它能幫我們維護(hù)我們的插件的繁多的功能。
在這個(gè)文件中加入下面一行:
setlocal foldmethod=indent
關(guān)閉Vim,重新打開factoria.pn
。用zR
,zM
和za
嘗試折疊功能。
一行Vimscript代碼就能帶來一些有用的折疊!這真是太酷了!
你可能注意到factorial
函數(shù)的內(nèi)循環(huán)里面的那幾行不能折疊,盡管它們縮進(jìn)了。 為什么會(huì)這樣?
事實(shí)上,在使用indent
折疊時(shí),Vim默認(rèn)忽略以#
字符開頭的行。 這在編輯C文件時(shí)很有用(這時(shí)#
表示一個(gè)預(yù)編譯指令),但在編輯其他文件時(shí)不怎么有意義。
讓我們?cè)?code>ftplugin/potion/folding.vim中添加多一行來修復(fù)問題:
setlocal foldmethod=indent
setlocal foldignore=
關(guān)閉并重新打開factorial.pn
,現(xiàn)在內(nèi)部塊可以正常地折疊了。
閱讀:help foldmethod
.
閱讀:help fold-manual
.
閱讀:help fold-marker
和:help foldmarker
.
閱讀:help fold-indent
.
閱讀:help fdl
和:help foldlevelstart
.
閱讀:help foldminlines
.
閱讀:help foldignore
.
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)系方式:
更多建議: