Оглавление со складыванием VIM
Давным-давно был редактор под названием MultiEdit. У этого есть особенность, которую я не могу найти во всех мощных VIM. В MultiEdit я мог нажать некоторую горячую клавишу, и это показывало бы что-то вроде оглавления (иначе, сжатый режим, иначе контур), где я мог видеть только 1-ю строку всех функций (пусть это будет источник C) в текущем файле. Затем я мог бы переместить курсор на нужную мне функцию, и после нажатия кнопки ввода режим переключится на нормальный режим, и я буду в нужной мне функции. Очень полезно для тех, кто любит складывать много функций в один файл. Эта функция была чрезвычайно проста в использовании: одна опция конфигурации для ввода регулярных выражений для выбора строк заголовка и одна горячая клавиша для переключения режима.
VIM имеет складной. Но это другое. Складывание скрывает части файлов и отображает индикатор сложенных линий. Гораздо сложнее указать, что скрывать в сгибах для отображения таблицы содержимого: нужно начинать сгиб в строке заголовка и заканчивать до следующей строки заголовка. Это сложнее, чем просто регулярное выражение для выбора заголовков.
Я очень хотел эту функцию, я даже написал макрос VIM, чтобы эмулировать это поведение MultiEdit, хотя я не очень много знаю VIM. Я написал это отчасти потому, что было легче выучить новый язык и написать макрос, чем понять сложность модуля сворачивания VIM. К сожалению, после обновления VIM этот макрос теперь не работает (бесконечный цикл?). Я написал это давным-давно, и то, что я мало знал о VIM, все забыто, и я не мог исправить это сейчас. (РЕДАКТИРОВАТЬ: я исправил свой сценарий. Спасибо @romainl за ссылку).
Мой вопрос, как получить эту таблицу содержания, как отображение в VIM?
4 ответа
Этот недавний vimcast Дрю Нейла объясняет общие черты фолда, и этот процесс проходит через процесс создания фолда, за которым вы (вероятно) следите.
В зависимости от языка, с которым вы работаете, и вашего стиля кодирования,
set foldmethod=marker
set foldmarker={,}
а также zM
может пройти долгий путь
Если вы хотите настроить отображаемую информацию, вторая ссылка выше, скорее всего, именно то, что вам нужно.
Это не здорово, но ты пробовал setlocal foldmethod=syntax
? Кажется, что в 7,3 на Windows работает достойно.... хотя я только что понял, что у нашего стандарта кодирования есть открывающая скобка для блока в конце строки, а не на новой строке, и если я перехожу к тому, чтобы иметь его на новой строке, он работает существенно хуже.
Вы также посмотрите, как подключается плагин vim с расширением Unite-Ouline, и оно дает поведение, очень близкое к тому, что вы описываете.