Подтвердить что ты не робот

Можно ли прыгать в закрытые складки в Вим?

В Vim я часто нахожу, что хочу сделать быстрый z k или z j, чтобы перейти к предыдущей или следующей складке в файле. Проблема в том, что я часто хочу пропустить все открытые складки и просто перейти к ближайшей закрытой складке.

Есть ли способ сделать это? В руководстве отсутствует встроенная раскладка клавиатуры.

4b9b3361

Ответ 1

Позвольте мне предложить следующие отображения, реализующие описанное поведение.

nnoremap <silent> <leader>zj :call NextClosedFold('j')<cr>
nnoremap <silent> <leader>zk :call NextClosedFold('k')<cr>
function! NextClosedFold(dir)
    let cmd = 'norm!z' . a:dir
    let view = winsaveview()
    let [l0, l, open] = [0, view.lnum, 1]
    while l != l0 && open
        exe cmd
        let [l0, l] = [l, line('.')]
        let open = foldclosed(l) < 0
    endwhile
    if open
        call winrestview(view)
    endif
endfunction

Ответ 2

Нет, нет (насколько мне известно) метода сборки для этого. Интересная идея, однако.

Если бы у меня было какое-то время на данный момент, я мог бы попытаться найти способ сделать это - к сожалению, будучи занятым в настоящее время, все, что я могу предложить, это посмотреть на Обнаружение вопрос с отложенной строкой или инкрементный поиск (в частности, функция foldclosed) и попытайтесь выполнить функцию самостоятельно. Проверяя каждую строку, если складка открыта, пропустите... что-то вдоль этих строк.