使用Vim,实现只折叠函数块的PHP代码折叠的最佳方法是什么?
我目前正在使用Vim编辑PHP文件,并且只想为函数实现代码折叠。我已尝试设置使用Vim,实现只折叠函数块的PHP代码折叠的最佳方法是什么?,php,vim,folding,Php,Vim,Folding,我目前正在使用Vim编辑PHP文件,并且只想为函数实现代码折叠。我已尝试设置foldmethod=expr,并在.vimrc文件中使用带有foldexpr的正则表达式。问题是我不完全理解foldexpr是如何使用regex将折叠应用于源代码的,我似乎无法正确理解 基本上,我希望所有PHP函数(也在类内部)都折叠起来,就这样。最接近我的是: set foldexpr=getline(v:lnum-1)=~'function'?'>1':'=' 但这是不对的,我想看看我是否能用花括号更聪明一
foldmethod=expr
,并在.vimrc文件中使用带有foldexpr
的正则表达式。问题是我不完全理解foldexpr
是如何使用regex将折叠应用于源代码的,我似乎无法正确理解
基本上,我希望所有PHP函数(也在类内部)都折叠起来,就这样。最接近我的是:
set foldexpr=getline(v:lnum-1)=~'function'?'>1':'='
但这是不对的,我想看看我是否能用花括号更聪明一点
有什么想法吗?IIRC折叠不适用于正则表达式,因为它会减慢vim的速度。通过使用foldmethod=indent并设置foldnestmax以限制创建的嵌套折叠的数量,您可能会得到想要的结果。我通过使用内置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.
看看这本书
这比内置的php_folding
语法要好得多,因为它理解phpdoc/doxygen docblocks,折叠代码以便仍然可以看到函数名(但隐藏其前面的文档)
例如:
这有点奇怪,你需要运行:EnablePHPFolds
来更新东西,当我启动Vim时,我收到一条奇怪的消息(但这可能是因为我用Vundle安装了它),但这是一件美妙的事情
(也在中引用)我已经转到另一个折叠插件