我目前正在使用Vim编辑PHP文件,并希望仅为函数实现代码折叠。我尝试在我的.vimrc文件中设置foldmethod=expr
并在foldexpr
中使用正则表达式。问题是我不完全理解foldexpr
如何使用正则表达式将折叠应用于源代码,我似乎无法做到正确。
基本上我想要折叠所有PHP函数(内部类),就是这样。我最近得到的是:
set foldexpr=getline(v:lnum-1)=~'function'?'>1':'='
但它不对,我想看看我是否可以通过花括号更加智能化。
有什么想法吗?
答案 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)
这比内置的php_folding
语法要好得多,因为它理解phpdoc / doxygen docblocks,折叠代码,这样你仍然可以看到函数名称(但隐藏了它之前的文档)。
示例:
有点奇怪,你需要运行:EnablePHPFolds
来更新内容,当我启动Vim时我收到一条奇怪的信息(但这可能是因为我已经用Vundle安装了它),但它是美丽的东西!