Оглавление со складыванием VIM

Давным-давно был редактор под названием MultiEdit. У этого есть особенность, которую я не могу найти во всех мощных VIM. В MultiEdit я мог нажать некоторую горячую клавишу, и это показывало бы что-то вроде оглавления (иначе, сжатый режим, иначе контур), где я мог видеть только 1-ю строку всех функций (пусть это будет источник C) в текущем файле. Затем я мог бы переместить курсор на нужную мне функцию, и после нажатия кнопки ввода режим переключится на нормальный режим, и я буду в нужной мне функции. Очень полезно для тех, кто любит складывать много функций в один файл. Эта функция была чрезвычайно проста в использовании: одна опция конфигурации для ввода регулярных выражений для выбора строк заголовка и одна горячая клавиша для переключения режима.

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

Я очень хотел эту функцию, я даже написал макрос VIM, чтобы эмулировать это поведение MultiEdit, хотя я не очень много знаю VIM. Я написал это отчасти потому, что было легче выучить новый язык и написать макрос, чем понять сложность модуля сворачивания VIM. К сожалению, после обновления VIM этот макрос теперь не работает (бесконечный цикл?). Я написал это давным-давно, и то, что я мало знал о VIM, все забыто, и я не мог исправить это сейчас. (РЕДАКТИРОВАТЬ: я исправил свой сценарий. Спасибо @romainl за ссылку).

Мой вопрос, как получить эту таблицу содержания, как отображение в VIM?

4 ответа

Решение

Этот недавний vimcast Дрю Нейла объясняет общие черты фолда, и этот процесс проходит через процесс создания фолда, за которым вы (вероятно) следите.

В зависимости от языка, с которым вы работаете, и вашего стиля кодирования,

set foldmethod=marker
set foldmarker={,}

а также zM может пройти долгий путь

CSS сворачивание

Если вы хотите настроить отображаемую информацию, вторая ссылка выше, скорее всего, именно то, что вам нужно.

Взгляните на ctags и тэгбар плагина vim.

Это не здорово, но ты пробовал setlocal foldmethod=syntax? Кажется, что в 7,3 на Windows работает достойно.... хотя я только что понял, что у нашего стандарта кодирования есть открывающая скобка для блока в конце строки, а не на новой строке, и если я перехожу к тому, чтобы иметь его на новой строке, он работает существенно хуже.

Вы также посмотрите, как подключается плагин vim с расширением Unite-Ouline, и оно дает поведение, очень близкое к тому, что вы описываете.

Другие вопросы по тегам