2009-04-17 84 views

回答

11

要根據語法

:set foldmethod=syntax 

如果你想要做手工,你要摺疊起來

:set foldmethod=manual 

然後通過選擇/移動並壓緊ZF 創建新的褶皺位折例如

shift-v j j zf 

(忽略空格)

編輯:又見這個答案的評論對縮進和標記foldmethods。

1

在vi中(相對於VIM)的回答是:

:set wm=1 

這設置渦卷餘量於一個字符的行的結束之前。這不是具有可變尺寸窗口的世界上最好的規格(當難以改變尺寸時,它對綠色屏幕有意義)。

這意味着還有另一種方式做到這一點在vim:

:set textwidth=30 

參見:VimDoc User Manual Section 25.1

+1

好的建議,但我覺得OP是詢問有關代碼摺疊,而不是換行符 – ephemient 2009-04-17 22:06:31

+0

行;'代碼摺疊'不是我之前遇到的術語,所以我接受修改 – 2009-04-18 04:46:22

5

我想你可能混合的術語。你需要「包裝」還是「摺疊」?包裝是指由於其長度而不適合屏幕的線條被包裹,即顯示在屏幕上的幾條連續線條上(實際上,它是一行,幾行 - 難以解釋,最好看到實踐)。

在VIM包裹由

:set wrap 

設置爲打開它,並

:set textwidth=80 

以確定Vim應該自動換行(80個字符通常是一個很好的量度)。

摺疊另一方面是完全不同的問題。它是vim將幾行代碼(例如,一個函數)摺疊成一行代碼的地方。這對提高代碼的可讀性很有用。 Vim有多種摺疊方式,你可以看到所有這些,如果你

:help folding 

你正在尋找的,我想會是這樣,語法摺疊什麼,但我可能是錯的。我建議閱讀幫助頁面,它不長,並且非常有用。

0

的你可能要設定

:set foldmethod=syntax 

但不要手動將在!這錯過了Vims最大的特點之一,那就是已經內置了數百種文件類型的自定義設置。爲了達到這個目的,把它添加到你的〜/。vimrc

filetype plugin on 
filetype indent on 

filetype檢測主要基於擴展名,在本例中爲* .c文件。有關更多信息,請參閱:help:filetype。您也可以自定義這些基於文件類型的設置。

0

實際上,還有另外一種非常直接有效的方法,它使用foldmethod = marker和設置foldmarker{,}。然後摺疊結果將如下所示:

  1. 摺疊的所有功能。基本上,它看起來像IDE中的輪廓。 (你也可以set foldlevel=1或更多,如果你不想在一開始一切倍)

enter image description here

  • 這是一個正常的功能是什麼樣子時,你可以通過zo以level-1打開它。
  • enter image description here

    另外,做語法摺疊需要一點額外的工作,這裏是一個關於它的好tutorial。但我認爲摺合marker={,}已經足夠了,最重要的是它簡單而整齊。

    2

    我已經卷起了fold plugin for C and C++。它超越了語法摺疊所做的事情(可能會改進,我不知道),並且與基於縮進和基於標記的摺疊相比,葉子的噪音更小,展現的並不是真正有用的東西。警告:爲了有良好的反應時間,我不得不做一些簡化,有時結果相當混亂(我們必須鍵入zx來修復它)。

    這裏是一個小截屏看到插件如何摺疊正確平衡的C++源代碼,這是沒有被修改:(

    enter image description here