使用Vim,实现仅折叠功能块的PHP代码折叠的最佳方法是什么?

时间:2011-08-22 14:34:28

标签: php vim folding

我目前正在使用Vim编辑PHP文件,并希望仅为函数实现代码折叠。我尝试在我的.vimrc文件中设置foldmethod=expr并在foldexpr中使用正则表达式。问题是我不完全理解foldexpr如何使用正则表达式将折叠应用于源代码,我似乎无法做到正确。

基本上我想要折叠所有PHP函数(内部类),就是这样。我最近得到的是:

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

但它不对,我想看看我是否可以通过花括号更加智能化。

有什么想法吗?

3 个答案:

答案 0 :(得分:11)

我通过使用内置的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.

答案 1 :(得分:2)

IIRC折叠不能与正则表达式一起使用,因为它会减慢vim的速度。您可以使用foldmethod = indent获得所需的内容,并设置foldnestmax以限制创建的嵌套折叠数。

答案 2 :(得分:2)

查看phpfolding plugin

这比内置的php_folding语法要好得多,因为它理解phpdoc / doxygen docblocks,折叠代码,这样你仍然可以看到函数名称(但隐藏了它之前的文档)。

示例:

screenshot

有点奇怪,你需要运行:EnablePHPFolds来更新内容,当我启动Vim时我收到一条奇怪的信息(但这可能是因为我已经用Vundle安装了它),但它是美丽的东西!

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