Можно ли прыгать в закрытые складки в Вим?
В Vim я часто нахожу, что хочу сделать быстрый z k или z j, чтобы перейти к предыдущей или следующей складке в файле. Проблема в том, что я часто хочу пропустить все открытые складки и просто перейти к ближайшей закрытой складке.
Есть ли способ сделать это? В руководстве отсутствует встроенная раскладка клавиатуры.
Ответы
Ответ 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
) и попытайтесь выполнить функцию самостоятельно. Проверяя каждую строку, если складка открыта, пропустите... что-то вдоль этих строк.