vim 摺疊的用法

來源:互聯網
上載者:User

 

http://www.cnblogs.com/fakis/archive/2011/04/14/2016213.html1. 摺疊方式

可用選項來設定摺疊方式:

可在Vim 設定檔中設定 set fdm=XXX
可直接在檔案中使用注釋調用vim命令 /* vim: set fdm=XXX: */

有6種方法來選定摺疊:
1    manual          手工定義摺疊         
2    indent           更多的縮排表示更進階別的摺疊         
3    expr              用運算式來定義摺疊         
4    syntax           用文法高亮來定義摺疊         
5    diff                對沒有更改的文本進行摺疊         
6    marker           對文中的標誌摺疊

注意,每一種摺疊方式不相容,如不能既用expr又用marker方式,我主要輪流使用indent和marker方式進行摺疊。

使用時,用 set fdm=marker 命令來設定成marker摺疊方式(fdm是foldmethod的縮寫)。
要使每次開啟vim時摺疊都生效,則在.vimrc檔案中添加設定,如添加:set fdm=syntax,就像添加其它的初始化設定一樣。

2. 摺疊命令

選取了摺疊方式後,我們就可以對某些代碼實施我們需要的摺疊了,由於我使用indent和marker稍微多一些,故以它們的使用為例:如果使用了indent方式,vim會自動的對大括弧的中間部分進行摺疊,我們可以直接使用這些現成的摺疊成果。

在可摺疊處(大括弧中間):
1    zc      摺疊
2    zC     對所在範圍內所有嵌套的摺疊點進行摺疊
3    zo      展開摺疊
4    zO     對所在範圍內所有嵌套的摺疊點展開
5    [z       到當前開啟的摺疊的開始處。
6    ]z       到當前開啟的摺疊的末尾處。
7    zj       向下移動。到達下一個摺疊的開始處。關閉的摺疊也被計入。
8    zk      向上移動到前一摺疊的結束處。關閉的摺疊也被計入。

當使用marker方式時,需要用標計來標識代碼的摺疊,系統預設是{{{和}}},最好不要改動

我們可以使用下面的命令來建立和刪除摺疊:

01    zf      建立摺疊,比如在marker方式下:                  
02             zf56G,建立從當前行起到56行的程式碼摺疊功能;                  
03             10zf或10zf+或zf10↓,建立從當前行起到後10行的程式碼摺疊功能。                  
04             10zf-或zf10↑,建立從當前行起到之前10行的程式碼摺疊功能。                  
05             在括弧處zf%,建立從當前行起到對應的匹配的括弧上去((),{},[],<>等)。
06    
07    zd      刪除 (delete) 在游標下的摺疊。
08             僅當 'foldmethod' 設為 "manual" 或 "marker" 時有效。
09    
10    zD     迴圈刪除 (Delete) 游標下的摺疊,即嵌套刪除摺疊。
11             僅當 'foldmethod' 設為 "manual" 或 "marker" 時有效。
12    
13    zE      除去 (Eliminate) 視窗裡“所有”的摺疊。
14             僅當 'foldmethod' 設為 "manual" 或 "marker" 時有效。

 http://yyq123.blogspot.com/2011/09/vim-fold.html

 

當我們查看很長的文本時(比如程式碼),可以使用:set foldenable命令來啟動摺疊。首先將內容按照其結構摺疊起來,查看檔案的大綱,然後再針對待定的行展開摺疊,顯示文本的詳細內容。

Vim將摺疊等同於行來對待——你可以使用j或k命令,移動跳過包含多行的整個摺疊;也可以使用y或d命令,複製或刪除某個摺疊。

通常在摺疊處向左或向右移動游標,或者進入插入模式,都將會自動開啟摺疊。我們也可以使用以下命令定義快速鍵,使用空格鍵關閉當前開啟的摺疊,或者開啟當前關閉的摺疊。

:nnoremap <space> za

按照摺疊所依據的規則,可以分為Manual(手工摺疊)、Indent(縮排摺疊)、Marker(標記摺疊)和Syntax(文法摺疊)等幾種。

Manual Fold

使用以下命令,啟用手工摺疊。

:set foldmethod=manual

在可視化模式下,使用以下命令,將摺疊選中的文本:

zf

通過組合使用移動命令,可以摺疊指定的行。例如:使用zf70j命令,將摺疊游標之後的70行;使用5zF命令,將當前行及隨後4行摺疊起來;使用zf7G命令,將當前行至全文第7行摺疊起來。

我們也可以使用以下命令,摺疊括弧(比如()、[]、{}、><等)包圍的地區:

zfa(

Vim並不會自動記憶手工摺疊。但你可以使用以下命令,來儲存當前的摺疊狀態:

:mkview

在下次開啟文檔時,使用以下命令,來載入記憶的摺疊資訊:

:loadview

可以使用以下命令,查看關於手工摺疊的協助資訊:

:help fold-manual

Indent Fold

使用以下命令,啟用縮排摺疊。所有文本將按照(選項shiftwidth 定義的)縮排層次自動摺疊。

:set foldmethod=indent

使用zm命令,可以手動摺疊縮排;而利用zr命令,則可以開啟摺疊的縮排。

使用以下命令,將可以根據指定的層級摺疊縮排:

:set foldlevel=1

可以使用以下命令,查看關於縮排摺疊的協助資訊:

:help fold-indent

Syntax Fold

使用以下命令,啟用文法摺疊。所有文本將按照文法結構自動摺疊。

:set foldmethod=syntax

可以使用以下命令,查看關於文法摺疊的協助資訊:

:help fold-syntax

Marker Fold

使用以下命令,啟用標記摺疊。所有文本將按照特定標記(預設為{{{和}}})自動摺疊。

:set foldmethod=marker

我們可以利用標記摺疊,在文本中同時體現結構和內容,並且能夠快速跳轉到檔案的不同部分。

可以使用以下命令,查看關於標記摺疊的協助資訊:

:help fold-marker

摺疊選項

使用:set foldcolumn=W命令(W是一個0-12的整數),將在螢幕左側顯示一個摺疊識別欄位,分別用“-”和“+”而表示開啟和關閉的摺疊。

使用以下命令,可以查看關於摺疊的協助資訊:

:help folding

命令小結
zc 關閉當前開啟的摺疊
zo 開啟當前的摺疊
zm 關閉所有摺疊
zM 關閉所有摺疊及其嵌套的摺疊
zr 開啟所有摺疊
zR 開啟所有摺疊及其嵌套的摺疊
zd 刪除當前摺疊
zE 刪除所有摺疊
zj 移動至下一個摺疊
zk 移動至上一個摺疊
zn 禁用摺疊
zN 啟用摺疊

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.