2011-01-31 23 views
2

我目前編輯類似於奇怪摺疊時,有一個{和}在同一行。&*

int func_name_1(int param) { 
    do_stuff(); 
    and_more(); 
} 

int func_name_2(int param) { 
    do_different_stuff(); 

    STRUCT_TYPE s = {5, 8, 10, 12}; 
    do_something_with(s); 
} 

一個C++與TWP功能的文件如果我做的話func_name_1一個zc, VIM摺疊功能,符合市場預期,因此現在看起來像

int func_name_1(int param) {-------------------- 

。但是func_name_2,功能摺疊,像這樣:

int func_name_2(int param) {--------------------- 
    do_something_with(s); 
} 

這不完全是我想要的。由於某種原因,在一條線上的打開和關閉{}似乎擾亂了摺疊算法。

如果有人知道如何獲得「更好」的摺疊,我會欣賞任何方向的暗示。

編輯,我相信選擇是有關這個問題在我的緩衝區設置,像這樣

set foldmarker={,} 
set foldmethod=marker 
set foldtext=getline(v:foldstart) 

編輯II:如果我改變了符合開閉{... }到STRUCT_TYPE s = { 5, 8, 10, 12};(注意{之後的空格),然後摺疊按預期工作。

+0

`foldminlines`的價值是什麼? – Benoit 2011-02-01 10:34:45

+0

@Benoit,foldminlines爲1. – 2011-02-01 21:39:38

回答

3

哦....我看....

:help fold-marker告訴我:標記可以有一個級別包括[..]下面的數字決定了摺疊 水平

所以,5立刻在{之後指定的摺疊級別,這讓事情搞砸了。

0

zc命令關閉當前的倍數。您可能創建了一個可以關閉它的文件夾,因此您的問題是創建摺疊並關閉它。

要創建摺疊使用zfzFzf適用於視覺模式,也適用於像zf2j這樣的動作,以在兩行上創建摺疊。 zF已經以「線條式」方式工作。

在你的情況下,最實際的方法是將光標定位在括號上(例如使用f{)並運行zf%來創建和關閉摺疊並轉到匹配括號。無論如何,如果該支架位於另一條線上(因此您可以使用]]進行此操作),那將更加實用,但這是一個超出此答案範圍的慣例:-)

+0

他沒有設置`foldmethod = manual`,而是使用自定義標記設置`foldmethod = marker`。 – Benoit 2011-02-01 06:33:39