Как изменить положение результата предварительного просмотра плагина taglist vim (нажав "p")

При использовании команды предварительного просмотра [p] или перехода к [enter] в окне taglist соответствующая строка по умолчанию находится в окне редактирования файла. Поскольку мне в основном нужно видеть больше того, что находится сразу после выбранного тега (функции), я бы хотел изменить строку, в которой тег отображается из центра, скажем, на одну треть от текущего размера страницы (количество строк) или даже в явную строку (скажем, 10-я строка сверху).

Есть ли команда / настройки, которые бы регулировали отображаемую позицию выбранного тега? (Я не мог найти один в руководстве).

Спасибо

3 ответа

Решение

Что касается комментария Инго Карката, мне удалось найти соответствующую строку в плагине taglist (начиная со строки 3357, версия 4.6):

" Jump to the tag
if a:tagpat != ''
    " Add the current cursor position to the jump list, so that user can
    " jump back using the ' and ` marks.
    mark '
    silent call search(a:tagpat, 'w')

    " Bring the line to the middle of the window
    normal! z.

    " If the line is inside a fold, open the fold
    if foldclosed('.') != -1
        .foldopen
    endif
endif

Здесь часть normal! z. должно быть соответствующим образом изменено на то, что изменило бы положение выбранной строки соответствующим образом. Поскольку я не гуру vim-plugin, я изменил его самым тупым способом, насколько это возможно.

" Bring the line to the middle of the window
normal! zt
normal! 10k
silent call search(a:tagpat, 'w')

который просто поднимается 10 раз и снова ищет правильную позицию. Надеюсь, что это может помочь кому-то, кто "борется" с той же проблемой в данный момент, пока не будет предложено лучшее решение, или Yegappan Lakshmanan, автор, не включит это (или, скорее, что-то более приятное) в свой плагин (если он, конечно, решит это сделать):))

Вы, вероятно, ищете zt (перерисовать с текущей строкой вверху окна) и zz (перерисовать в центре) команды, или что-то промежуточное (что может быть достигнуто с помощью <C-Y> / <C-E> после этих команд).

Как включить это в плагин, лучше всего обсудить с автором плагина. Поскольку вы не нашли никаких настроек для этого, вам, вероятно, придется напрямую изменить исходный код. Напишите свое предложение автору; вы можете получить конфигурацию / зацепку для этого в следующей версии плагина, или советы, как это сделать, или, возможно, мнение автора о том, почему это плохая идея.

Вы можете попытаться настроить scrolloff установка. Я не знаю плагин tagbar но я представляю настройки :set so=5 должен предоставить вам некоторый контекст при прыжках вокруг.

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