基于Vim语法的PHP代码折叠

10

我已经下载了包含基于PHP的语法信息的php.vim文件。它应该能够提供基于语法的折叠,但由于某些原因,我无法使其正常工作。

我已经设置了:let g:php_folding 2:set foldmethod=syntax,但没有效果。我很确定文件在正确的位置并且被vim读取,因为我可以执行:let g:php_sql_query=1,它可以正常工作。

php.vim文件位于~/.vim/syntax/php.vim


你是不是没有看到任何折叠或者没有看到你想要的折叠?你尝试过使用':set foldlevel=0'吗? - user55400
3个回答

14

:syntax enable(或者 :syntax on)的作用是打开文件类型检测,只有在检测到文件类型之后,代码折叠和语法高亮才能正确工作。

如果你正在开发 PHP,那么你可能想要在你的 .vimrc 文件中添加以下三行:

set nocompatible          " Because filetype detection doesn't work well in compatible mode
filetype plugin indent on " Turns on filetype detection, filetype plugins, and filetype indenting all of which add nice extra features to whatever language you're using
syntax enable             " Turns on filetype detection if not already on, and then applies filetype-specific highlighting.

然后,您可以将let g:php_folding=2set foldmethod=syntax放入您的~/.vim/after/ftplugin/php.vim文件中。这将使您的.vimrc文件保持干净,有助于组织所有设置,并且foldmethod = syntax仅影响php文件(如果您想将语法设置为所有文件类型的默认折叠方法,请在.vimrc文件中保留该行)。有关更详细的信息,请阅读以下帮助文件:

:help filetype
:help usr_05.txt
:help usr_43.txt


4

我发现了phpfolding.vim,而且它非常易于使用。

  1. 将phpfolding.vim放到$HOME/.vim/plugin/目录下

  2. 添加快捷键映射

    map <F5> <Esc>:EnableFastPHPFolds<Cr>

    map <F6> <Esc>:EnablePHPFolds<Cr>

    map <F7> <Esc>:DisablePHPFolds<Cr>

享受它吧!


默认的 PHP 折叠仅折叠类方法。 这个折叠也可以折叠常规函数吗? - Masse
1
也可以尝试使用 https://github.com/swekaj/php-foldexpr.vim - 我发现它比答案中的更好。 - artfulrobot

0

显然我的VIM没有运行:syntax enable。

执行:syntax enable解决了问题,但我还在.vimrc中添加了:syntax on。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接