vim의 마지막 줄 끝까지 자연스럽게 스크롤

vim의 마지막 줄 끝까지 자연스럽게 스크롤

저는 vim 초보자이고 이 문제를 해결하는 데 도움이 되는 리소스를 찾는 데 어려움을 겪고 있습니다.

커서를 파일의 맨 아래로 이동할 때 마지막 줄을 지나서 계속 진행하고 싶습니다. 마지막 줄이 창의 맨 위에 올 때까지 계속하는 것이 좋지만 무기한으로 해도 괜찮습니다. 현재 내 솔루션은 set scrolloff=20my를 입력한 ~/.vimrc다음 G+를 눌러 zz맨 아래로 이동하는 것입니다. 하지만 위아래로 스크롤하면 마지막 행이 다시 맨 아래에 붙여 넣어집니다.

파일 뒤에 개행 문자가 없기 때문에 실제로 스크롤할 수 있는 항목이 없다는 것을 이해합니다. 하지만 그럼에도 불구하고 창 중앙에 있는 맨 아래 줄을 사용하여 파일을 편집할 수 없어서 짜증납니다.

그래서 궁극적으로 나는 최종 결과에 도달했을 때 그것을 누르고 있으면 j아래로 스크롤되기를 바라고 있습니다. 이를 수행할 수 있는 방법이 있습니까?

답변1

이 동작에 대한 기본 제공 옵션은 없다고 생각하지만 구성의 일부 키 바인딩을 사용하면 커서가 중간에 있는 줄을 영구적으로 유지할 수 있습니다(파일의 처음 몇 줄 제외).

set scrolloff=99999

nnoremap <C-U> 11kzz
nnoremap <C-D> 11jzz
nnoremap j jzz
nnoremap k kzz
nnoremap # #zz
nnoremap * *zz
nnoremap n nzz
nnoremap N Nzz
nnoremap gg ggzz
nnoremap G Gzz
nnoremap gj gjzz
nnoremap gk gkzz

zz이는 현재 줄 다음에 수행할 일반적인 작업을 매핑하고 화면 중앙에 배치합니다. 화면 위치가 다시 중앙에 놓이기 전에 실제로 뒤로 이동하므로 속도가 느린 터미널(예: SSH를 통해)에서는 깜박임이 발생할 수 있습니다.

답변2

현재 커서 라인을 화면의 특정 위치로 이동할 수도 있습니다.

<Ctrl-E>현재 행을 한 행 위로 이동하는 데 사용합니다 .

zt현재 행을 페이지 상단으로 이동할 수도 있습니다 .

추가 정보여기

답변3

이 스크립트를 찾았습니다https://www.vim.org/scripts/script.php?script_id=1649실제로 이것은 이전 답변보다 더 잘 작동합니다. 텍스트를 삽입하면 스크롤이 점프하는 것처럼 보입니다.

여기 거울:https://github.com/vim-scripts/scrollfix

답변4

에서 조건부 다시 매핑을 사용할 수 있습니다 j. 문서의 마지막 줄에 있으면 j에 매핑됩니다. <C-e>다른 줄 맵 j에 있으면 j.

nnoremap <expr> j line(".") == line('$') ? '<C-e>':'j'

line(".")은 현재 줄 번호를 반환하고, line("$")은 마지막 줄 번호를 반환합니다.

관련 정보