С помощью Vim, каков наилучший способ реализовать свертывание PHP-кода, которое сворачивает только блоки функций? - PullRequest
2 голосов
/ 22 августа 2011

В настоящее время я использую Vim для редактирования файлов PHP и хотел бы реализовать свертывание кода только для функций.Я попытался установить foldmethod=expr и использовать регулярное выражение с foldexpr в моем файле .vimrc.Проблема в том, что я не до конца понимаю, как foldexpr использует регулярное выражение для применения свертывания к исходному коду, и я не могу понять, что это правильно.

По сути, я хочу все функции PHP (внутри классовтоже) складываться и все тут.Самое близкое, что у меня есть:

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

, но это не правильно, и я хочу посмотреть, смогу ли я быть немного более умным с фигурными скобками.*

Ответы [ 3 ]

12 голосов
/ 20 сентября 2011

Я достиг того, что мне нужно, используя встроенный плагин 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.
2 голосов
/ 20 июня 2014

Проверьте phpfolding плагин .

Это намного лучше, чем встроенный синтаксис php_folding, потому что он понимает докблоки phpdoc / doxygen, сворачивает код, чтобы вы могли по-прежнему видеть имя функции (но скрывает документацию, которая предшествует ему).

Пример:

screenshot

Это немного странно, вам нужно запустить :EnablePHPFolds для обновления, и я получаю странное сообщение при запуске Vim (но это может быть потому, что я установил его с Vundle), но это вещь красоты!

(также ссылка на https://stackoverflow.com/a/11859632/623519)

2 голосов
/ 22 августа 2011

Складывание IIRC не работает с регулярными выражениями, потому что оно замедляет vim. Вы можете получить то, что хотите, используя foldmethod = indent и установить foldnestmax, чтобы ограничить количество создаваемых вложенных складок.

...