【问题标题】:Using Vim, what is the best way to implement PHP code folding that only folds functions blocks?使用 Vim,实现仅折叠函数块的 PHP 代码折叠的最佳方法是什么?
【发布时间】:2011-11-01 05:17:09
【问题描述】:

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

基本上我希望折叠所有 PHP 函数(也包括类内部),仅此而已。我得到的最近的是:

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

但这是不对的,我想看看我是否可以用花括号更聪明一点。

有什么想法吗?

【问题讨论】:

    标签: php vim folding


    【解决方案1】:

    IIRC 折叠不适用于正则表达式,因为它会减慢 vim。通过使用 foldmethod=indent 并设置 foldnestmax 来限制创建的嵌套折叠的数量,您可能会得到想要的结果。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        查看phpfolding plugin

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

        例子:

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

        (也参考https://stackoverflow.com/a/11859632/623519

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-26
        • 2011-07-01
        • 2011-11-17
        • 1970-01-01
        • 1970-01-01
        • 2016-10-26
        • 2014-09-25
        • 2020-12-14
        相关资源
        最近更新 更多