VIM for PHP:在Taglist中列出if()和include()

时间:2011-10-23 21:23:26

标签: php vim taglist

我在VIM中使用Taglist,但我继承的一个特定的PHP应用程序用if()和elseif()以及include()进行了广泛的编码。每个文件(以及数十或数百个文件)的近5000行代码中没有单一的方法或函数。有没有办法使用Taglist或其他插件来获得代码流的概述?我正在考虑在侧边栏中以简洁的方式显示if()中的条件,包括它们的层次结构。任何远离它的东西都会很棒。

谢谢!

2 个答案:

答案 0 :(得分:3)

这涉及一些工作,你需要编译修改后的ctags修改版本,修改后的php规则。

你可能想看看这里: http://ctags.sourceforge.net/EXTENDING.html

答案 1 :(得分:1)

使用foldlist pluginfoldmethod-syntax(或调整自己的foldmethod-expr)可以很好地运作。

事实上,即使没有插件,我相信正确的折叠设置会创造奇迹。 一些建议:

  • set foldmethod=syntax或(set foldmethod=exprset foldexpr=...适合您的情况)
  • set foldclose=all隐藏所有那些讨厌的ifs
  • set foldcolumn=2或更高版本以查看嵌套级别
  • set foldtext=MyFoldText()并制作一个功能,向您展示相关信息,

像:

function! MyFoldText()
   let line = getline(v:foldstart)
   let line = substitute(line, 'if(\(.*\)).*', 'if: \1', 'g')
   " ... etc
   return line
endfunction