倚天屠龍記 vim 摺疊

2021-07-03 00:19:19 字數 1962 閱讀 5841

這一節講述vim的乙個非常實用的功能----折行功能,它可以將暫時不關心的連續若干行摺疊成一行顯示,在需要時再予以展開。下面是本文寫作時的情形:

摺疊的主要建立方式有手工建立、語法摺疊、按縮排等級摺疊、按起止標記摺疊。要檢視摺疊的幫助請輸入:help fold。

摺疊相關的命令大都以字母z打頭,這個字母本身給人以一種摺疊的印象。

手工建立摺疊的方式是zf[motion],f是fold的簡寫,motion是任何游標移動指令(必須限於當前檔案中),比如zf5j會將從游標所在行起的接下來5行這個範圍建立乙個摺疊,用zo可以展開它,而zc則可以收起來顯示成一行,o和c分別對應open和close。將游標放在摺疊的起始處按zd可以刪除剛才建立的摺疊。

摺疊可以巢狀,形成層次結構,當檔案中的摺疊層次比較多時,按zr可以展開所有下一級的摺疊,而zm則收起當前這一層摺疊,多次按zr和zm則可以次第展開和收起,r和m分別代表著reduce和more,要一次性展開和收起全部巢狀的摺疊可以使用zr和zm,即r和m進行大寫即可。如果僅僅是想遞迴展開游標處的巢狀摺疊,可以使用zo命令,而相應的,用zc命令將游標處的巢狀摺疊遞迴收起來。

對於巢狀的摺疊,foldlevel是乙個非常有用的選項,它用於指定摺疊的層深,不超過此層深的摺疊將被展開,而高於此層深的摺疊則仍然保持收起狀態。最外層的摺疊層次為1,巢狀的摺疊依次累加,當用:set foldlevel=3設定了摺疊層深時,只有最外面的三層摺疊會展開,而巢狀層次大於3的仍保持摺疊狀態。當你使用zr和zm命令展開和收起摺疊時,實際上就是在對foldlevel進行增減操作。

語法摺疊對於書寫程式極為有用,程式語言大都有閉合的可巢狀的語法結構,如c/c++語言用一對花括號代表乙個程式塊,當用:set foldmethod=syntax或者:set fdm=syntax開啟語法摺疊後,**檔案中將自動按相應的起止標記按層次建立摺疊,無需再手工建立摺疊。

很多程式語言不同的**層次擁有不同層次的縮排,這時可以設定按縮排進行摺疊:set foldmethod=indent或者:set fdm=indent,較深的縮排則自動建立巢狀摺疊。縮排字元的個數與摺疊深度的關係依賴於選項shiftwidth的值,每shiftwidth個縮排字元為一級摺疊,對應著摺疊層深,通過:set shiftwidth=4可以規定每4個縮排為乙個等級,下面是c語言**使用縮排摺疊後的效果(因為花括號並未縮排,所以c語言**還是用語法摺疊更好一些):

如果不是程式**檔案,還可以按指定的起止標誌進行摺疊,這需要通過:set fdm=marker進行開啟,預設的起止標記是}},當然也可以用:set foldmarker自行指定,例如:set foldmarker (((,)))則將起止標記分別更改為(((和))) ,在摺疊時,起始標記如果不在行首,則其前面的文字將顯示在摺疊的前面,這正好可以利用來提示摺疊的內容,下面是本文摺疊起來的效果。

在編輯時,在摺疊行上上下移動游標,游標會直接跨過摺疊行,就好像這是一行一樣,如果對摺疊行進行複製貼上和刪除,則操作的物件的將是被摺疊起來的多行文字,這非常有利於按檔案結構進行編輯操作。

手工建立的摺疊在檔案被關閉後會全部丟失,如果想要儲存下來請閱讀幫助:help mkview。

最後還有一類建立摺疊的方式,就是根據表示式摺疊,你需要提供乙個表示式,這個表示式的作用是根據一行文字計算摺疊深度,然後vim會把相鄰並且深度都大於等於某個值的行建立為乙個摺疊,當然其中大於這個值的這些相鄰行會建立巢狀的摺疊。要用這種方式,需要:set fdm=expr進行啟用,並用:set foldexpr=express這種方式來設定表示式,其中express是乙個表示式,例如縮排摺疊就可以用表示式來實現,只要計算行首的空白字元個數並除以選項shiftwidth的值即可。

話說ipsec之倚天屠龍記版

雖然在這次研討會上覺遠給少林寺掙回了面子,但是一些教授開始嫉妒起覺遠的才華來,他們用匿名信的方式向校長天鳴方丈揭發覺遠教授挪用教學經費,並且使用教學經費請學生出去吃紅燒肉而且還喝酒 調戲路邊小妹。多次違反校規而且嚴重損毀學校在形象,天鳴方丈也沒有辦法只有做出去除覺遠教授的職務的決定!革除教授職務後,...