2011-08-22 76 views
2

我目前使用Vim來編輯PHP文件,並希望只爲函數實現代碼摺疊。我試過在我的.vimrc文件中設置foldmethod=expr並使用foldexpr的正則表達式。問題是我不完全理解foldexpr如何使用正則表達式來將摺疊應用到源代碼,我似乎無法做到。使用Vim,實現只摺疊功能塊的PHP代碼摺疊的最佳方式是什麼?

基本上我想要所有的PHP函數(內部類也是)摺疊,就是這樣。最近我得到的是:

set foldexpr=getline(v:lnum-1)=~'function'?'>1':'=' 

但它是不正確的,我想看看我是否可以用大括號更聰明一點。

任何想法?

回答

2

IIRC摺疊不適用於正則表達式,因爲它會減緩vim。通過使用foldmethod = indent並設置foldnestmax來限制創建的嵌套摺疊的數量,您可能會得到您想要的。

12

我通過使用內置的PHP插件實現了我所需要的功能,通過將其放入我的.vimrc文件中而不使用任何其他摺疊設置來激活。

let php_folding = 1  "Set PHP folding of classes and functions. 
let php_htmlInStrings = 1 "Syntax highlight HTML code inside PHP strings. 
let php_sql_query = 1  "Syntax highlight SQL code inside PHP strings. 
let php_noShortTags = 1 "Disable PHP short tags. 
+0

謝謝,這真的適合我。 – Sudar

2

查看phpfolding plugin

這比內置的php_folding語法更好,因爲它理解phpdoc/doxygen docblocks,摺疊代碼以便仍然可以看到函數名(但隱藏了它之前的文檔)。

例子:

screenshot

這是一個有點怪異,你需要運行:EnablePHPFolds更新的東西,我也得到一個奇怪的消息時我啓動Vim的(但可能是因爲我與Vundle安裝它),但它是美麗的!

(也引用於https://stackoverflow.com/a/11859632/623519

+1

我已經轉移到這個其他摺疊插件https://github.com/swekaj/php-foldexpr.vim – artfulrobot