W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
如果從未在Vim里使用過代碼折疊,你不知道你都錯過了什么。 閱讀:help usr_28
并花費時間在日常工作中使用它。 一旦到了銘記于指的程度,你就可以繼續(xù)本章了。
Vim支持六種不同的決定如何折疊你的文本的折疊類型。
你手動創(chuàng)建折疊并且折疊將被Vim儲存在內(nèi)存中。 當你關閉Vim時,它們也將一并煙消云散,而下次你編輯文件時將不得不重新創(chuàng)建。
在你把它跟一些自定義的創(chuàng)建折疊的映射結合起來時,這種方式會很方便。 在本書中,我們不會這么做,但當你想這么做的時候,它會幫上忙。
Vim基于特定的字符組合折疊你的代碼。
這些字符通常放置于注釋中(比如// {{{
), 不過在有些語言里,你可以使用該語言自己的語法代替,比如javascript的{
和}
。
純粹為了你的編輯器,用注釋割裂你的代碼看上去有點丑,但好處是你可以定制特定的折疊。 如果你想以特定的方式組織一個大文件,這個類型將是非常棒的選擇。
在diff文件時使用該特定的折疊類型。我們不會討論它,因為Vim會自動使用它。
這讓你可以用自定義的Vimscript來決定折疊的位置。它是最為強大的方式,不過也需要最繁重的工作。 下一章我們將講到它。
Vim使用你的代碼的縮進來折疊。同樣縮進等級的代碼折疊到一塊,空行則被折疊到周圍的行一起去。
這是最便捷的方式,因為你的代碼已經(jīng)縮進過了;你僅僅需要啟動它。 這將是我們用來折疊Potion代碼的第一種方式。
讓我們再一次看一下Potion實例代碼:
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)縮進好了。這意味著我們可以不怎么費力就能實現(xiàn)一些基本的縮進。
在我們開始之前,在total *= i
上添加一個注釋,這樣我們就有一個供測試的多行內(nèi)部塊。 你將在做練習的時候學到為什么我們需要這么做,但暫時先信任我。現(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插件的版本庫下創(chuàng)建一個ftplugin
文件夾,然后在里面創(chuàng)建一個potion
文件夾。 最后,在_potion
文件夾_里面創(chuàng)建一個folding.vim
文件。
不要忘了每次Vim設置一個buffer的filetype
為potion
時,它都會執(zhí)行這個文件中的代碼。 (因為它位于一個叫potion
的文件夾)
將所有的折疊相關的代碼放在同一個文件顯然是一個好主意,它能幫我們維護我們的插件的繁多的功能。
在這個文件中加入下面一行:
setlocal foldmethod=indent
關閉Vim,重新打開factoria.pn
。用zR
,zM
和za
嘗試折疊功能。
一行Vimscript代碼就能帶來一些有用的折疊!這真是太酷了!
你可能注意到factorial
函數(shù)的內(nèi)循環(huán)里面的那幾行不能折疊,盡管它們縮進了。 為什么會這樣?
事實上,在使用indent
折疊時,Vim默認忽略以#
字符開頭的行。 這在編輯C文件時很有用(這時#
表示一個預編譯指令),但在編輯其他文件時不怎么有意義。
讓我們在ftplugin/potion/folding.vim
中添加多一行來修復問題:
setlocal foldmethod=indent
setlocal foldignore=
關閉并重新打開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號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: