는 빔, 나는 자주 자신이 파일에 이전 또는 다음 배에 뛰어 빠른 Z에게K 또는 ZJ을하고자 찾을 수 있습니다. 문제는, 자주 자주 으로 건너 뛰고 모든 열린 주름을 건너 뛰고 가장 가까운 닫힌 폴드로 바로 이동한다는 것입니다.Vim에서 닫힌 주름으로 이동할 수 있습니까?
이 방법이 있습니까? 설명서에 내장 된 키맵이 없습니다.
는 빔, 나는 자주 자신이 파일에 이전 또는 다음 배에 뛰어 빠른 Z에게K 또는 ZJ을하고자 찾을 수 있습니다. 문제는, 자주 자주 으로 건너 뛰고 모든 열린 주름을 건너 뛰고 가장 가까운 닫힌 폴드로 바로 이동한다는 것입니다.Vim에서 닫힌 주름으로 이동할 수 있습니까?
이 방법이 있습니까? 설명서에 내장 된 키맵이 없습니다.
설명 된 동작을 구현하는 다음 매핑을 제안 해 보겠습니다.
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
아니요, 제가 아는 한 멀리 할 수있는 방법으로 빌드가 없습니다. 흥미로운 아이디어.
나는 순간에 약간의 시간이 있다면, 나는 그것을 할 수있는 방법 알아 내려고 시도 할 수 있습니다 - 요즘 바쁜, unfortunatelly을 모두 난 당신이 Detecting a folded line or an incremental search 질문 (특히 foldclosed
기능) 보는 것입니다 제안 할 수 있습니다 그리고 스스로 기능을 만드십시오. 접기가 열려 있으면 모든 줄을 확인하고 그 줄을 건너 뜁니다.
가볍다. 매력처럼 작동합니다. 감사합니다. – David
@ David : 고마워! 점프 루프를 단순화하고 원하는 방향으로 닫힌 폴드가없는 경우 커서를 그대로 유지하기 위해 코드에 대한 리팩토링을 수행했습니다. (후자의 동작은 아래/위에 폴드가없는 경우'zj' /'zk' 명령의 동작과 일치합니다.) –
@ib. 변경된 스크립트를 제공해 주시겠습니까? –