VIM для PHP: перечислите if () и include () в Taglist - PullRequest
7 голосов
/ 24 октября 2011

Я использую Taglist в VIM, но одно конкретное PHP-приложение, которое я унаследовал, широко написано с if () и elseif () и include (). Ни одного метода или функции в почти 5000 строк кода на файл (и десятки или сотни файлов). Есть ли способ использовать Taglist или другой плагин, чтобы получить обзор потока кода? Я думаю о чем-то вроде показа условий в if () кратко на боковой панели, включая их иерархию. Все, что близко к этому, было бы замечательно.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 07 февраля 2012

это включает в себя небольшую работу, вам нужно скомпилировать модифицированную версию exuberant ctags с измененными правилами для php.

, вы можете посмотреть здесь: http://ctags.sourceforge.net/EXTENDING.html

1 голос
/ 08 февраля 2012

Использование плагина фолдлиста вместе с foldmethod-syntax (или настройкой собственного foldmethod-expr) будет работать хорошо.

На самом деле, даже без плагина я считаю, что правильная настройка фолда будеттворить чудеса.Некоторые рекомендации:

  • set foldmethod=syntax или (set foldmethod=expr и set 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
...