나는 다음과 이전의 빈 줄로 점프하는 vim {
과 }
모션을 좋아 합니다.
나는 최근에 더 많이 접는 것을 사용하고 있으며 훌륭한 기능이지만 모션 {
및 }
모션 과 관련하여 기대하는 것을 수행하지 않습니다 . 겹의 빈 줄이있는 경우, 다음 {
과 }
이렇게 배를 열고, 거기에 착륙합니다.
접기 를 다시 매핑 {
하고 }
건너 뛸 수 있는 방법이 있습니까? 즉 거기에 배 내부에 빈 줄이 있었다하더라도,이다 {
와 }
멈추지 않을 것이다 그러나 다음 펼쳐진 빈 줄을 추구 것인가? 이것은 내가 기대하는 것과 더 잘 맞을 것입니다.
답변
첫 번째 질문 :
block
기본값 인 'foldopen'
다음을 제거해야합니다 .
set foldopen-=block
참조하십시오 :help 'foldopen'
.
두 번째 질문 :
이 매핑을 시도해 볼 수 있습니다
nnoremap <expr> } foldclosed(search('^$', 'Wn')) == -1 ? "}" : "}j}"
nnoremap <expr> { foldclosed(search('^$', 'Wnb')) == -1 ? "{" : "{k{"
답변
이 방법은 여러 개의 연속 접기를 고려합니다.
function! s:SkipFold(direction) abort
let l:currentLine = line('.')
while foldclosed(l:currentLine) != -1
let l:currentLine = search('^$', (a:direction ? 'Wn' : 'Wnb'))
if l:currentLine == 0
if a:direction
call cursor(line('$'), strlen(getline(line('$'))))
else
call cursor(1, 1)
endif
break
endif
call cursor(l:currentLine, 0)
endwhile
endfunction
nnoremap <silent>} }:call <SID>SkipFold(1)<cr>
nnoremap <silent>{ {:call <SID>SkipFold(0)<cr>