![vim 단락 점프 명령을 공백이 포함된 줄이나 코드 블록으로 수정](https://rvso.com/image/1313355/vim%20%EB%8B%A8%EB%9D%BD%20%EC%A0%90%ED%94%84%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EA%B3%B5%EB%B0%B1%EC%9D%B4%20%ED%8F%AC%ED%95%A8%EB%90%9C%20%EC%A4%84%EC%9D%B4%EB%82%98%20%EC%BD%94%EB%93%9C%20%EB%B8%94%EB%A1%9D%EC%9C%BC%EB%A1%9C%20%EC%88%98%EC%A0%95.png)
1) vim에서 { 및 } 명령을 사용하면 이전 또는 다음 완전히 빈 줄(또는 파일의 시작 또는 끝)로 이동할 수 있습니다. 완전히 비어 있거나 공백(또는 파일의 시작이나 끝)만 포함된 이전 또는 다음 줄로 이동하려면 이러한 명령을 어떻게 수정합니까?
2) 현재 들여쓰기로 정의된 현재 코드 블록의 시작이나 끝으로 이동하는 명령을 어떻게 생성합니까? 예를 들어 F라인에서 D나 G라인(또는 C나 H라인)으로 쉽게 이동하고 싶습니다.
A
B
C
D
E
F
G
H
I
답변1
질문 1은 상대적으로 쉬운 것 같습니다(제 대답은 다소 순진할 수도 있습니다).
nnoremap } /^\s*$<CR>
nnoremap { ?^\s*$<CR>
하지만 내 생각엔 다른 지름길을 찾아야 할 것 같아요.
또한 이미 gg
버퍼의 첫 번째 라인으로 점프하고 G
마지막 라인으로 점프해야 합니다. 그거면 충분하지 않아?
질문 2에 어떻게 간단하게 대답해야 할지 모르겠습니다. 시도해 보았 니vim-들여쓰기-객체?
답변2
romainl과 garyjohn의 훌륭한 팁을 결합하여 파트 #1에서 찾고 있던 정확한 기능을 얻었습니다.
nnoremap <silent> { :call MyPrevParagraph()<CR>
nnoremap <silent> } :call MyNextParagraph()<CR>
function MyNextParagraph()
let myline = search('^\s*$', 'W')
if myline <= 0
execute 'normal! G$'
else
execute 'normal! '.myline.'G0'
endif
endfunction
function MyPrevParagraph()
let myline = search('^\s*$', 'bW')
if myline <= 0
execute 'normal! gg0'
else
execute 'normal! '.myline.'G0'
endif
endfunction