화면의 1/4 (25 %)을 위 또는 아래로 스크롤


15

나는 종종 전체 페이지를 스크롤하는 것이 너무 혼란스럽고 반 페이지가 너무 많이 나가는 것을 발견하지만 1/4 페이지가 맞습니다. 나는 현재 화살표 키를 누르고 있으면됩니다.

페이지의 25 %를 쉽게 위아래로 스크롤하려면 어떻게합니까?


1
이 답변에서 교차 기능을 확인하십시오. stackoverflow.com/a/3102890
Sundeep

답변:


20

어쩌면 ctrldctrlu당신이 찾고있는 수 있습니다. 기본적으로 화면의 절반을 이동합니다.

보낸 사람 :h CTRL-D:

버퍼에서 스크롤 창을 아래쪽으로 내립니다. 줄 수는 '스크롤'옵션에서 나옵니다 (기본값 : 화면 반).

[count]가 지정된 경우 먼저 'scroll'옵션을 [count]로 설정하십시오.

이것은 창에서 처음 스크롤 할 때 수행 할 수있는 것을 의미합니다. XXctrld여기서 XX는 창의 행 수의 25 %입니다. 이 설정으로 scroll사람 XX 값으로 당신은 사용할 수 있습니다 ctrldctrlu화면의 25 %를 이동합니다.

또한, 나는 그것이 :h scrolling당신에게 흥미로울 것이라고 생각 합니다.


편집하다

그리고 여기에 추가 할 함수와 매핑이있는 또 다른 솔루션이 있습니다 .vimrc.

function! ScrollQuarter(move)
    let height=winheight(0)

    if a:move == 'up'
        let key="\<C-Y>"
    else
        let key="\<C-E>"
    endif

    execute 'normal! ' . height/4 . key
endfunction

nnoremap <silent> <up> :call ScrollQuarter('up')<CR>
nnoremap <silent> <down> :call ScrollQuarter('down')<CR>

이 함수는 현재 창의 높이를 가져 오며 그에 따라 매개 변수에 따라 높이의 1/4 화면을 위아래로 스크롤합니다.

매핑은 함수를 호출합니다. 첫 번째 함수는 올라가고 두 번째 함수는 내려갑니다.

물론 화살표 키의 기본 동작을 유지하려면 다른 키를 변경 <up>하거나 <down>다른 키로 변경할 수 있습니다 .


2
그것을 사용하는 것이 더 적합 할 수 있습니다 같아 ctrl-Ectrl-Y)가 있기 때문에, 매핑에. 그런 다음 1/2 페이지 및 1/4 페이지 스크롤에 대한 별도의 바로 가기가 있습니다. 비). ctrl-U/ 의 동작 ctrl-D은 일관되며 이전에 매핑을 사용했는지 여부에 의존하지 않습니다.
Rich

중요한 메모를 이해하지 못합니다. 수동 입력이란 무엇입니까? 현재 이것을 사용하면 페이지를 이동하는 대신 줄이 삭제됩니다.
Louis Hong

@LouisHong let key="^U"큰 따옴표 사이의 부분은의 키 코드를 나타내는 행을 참조하십시오 ctrl+u. 복사 한 경우에 따라서 정력의 함수는 첫 번째 큰 따옴표 히트에 커서를 ci"따옴표의 내용을 수정 한 후 히트 ctrl+v다음 ctrl+u라인에 동일로 let key="^D".
statox

@Rich : 예, 좋은 지적입니다. OP가 말한 화살표 키를 사용했지만 요점이 중요하기 때문에 화살표 키를 사용했습니다.
statox

@statox 당신은 나를 오해했습니다! (나는 명확하지 않았다). 나는 let key="^Y"대신 사용 을 의미했다 let key="^U". 'scroll'설정에 영향을 미치지 않으면 서 동일한 동작을 생성합니다 .
Rich


3

나는 statox 접근 방식을 바꿨으므로 라인 랩에서 보다 일관되게 스크롤됩니다. 1/4 단계를 원하면 0.618을 다시 0.25 등으로 변경하십시오.

function! ScrollGolden(move)
    let height=winheight(0)
    if a:move == 'up'
        let prep='L'
        " let key="^Y"
        let key='gk'
        let post='zb'
    elseif a:move == 'down'
        let prep='H'
        " let key="^E"
        let key='gj'
        let post='zt'
    endif
    execute 'normal! ' . prep . float2nr(round(height*0.618)) . key . post
endfunction
nnoremap <silent> <BS>    :call ScrollGolden('up')<CR>
nnoremap <silent> <Space> :call ScrollGolden('down')<CR>

0

정확한 일반 답변을 원하고 정확한 25 %가 아닌 경우 페이지의 일반 줄 수를 25로 나눠서 일부 시스템 매핑을 설정할 수 있습니다. 예를 들어 일반적으로 한 번에 화면에 약 100 줄이있는 경우 25 줄이 25 줄이므로 25 줄을 빠르게 위아래로 이동하기 위해 대문자 J 및 K와 같은 것에 키 매핑을 설정할 수 있습니다

noremap J 25j
noremap K 25k

전체 파일의 쿼터 마크로 건너 뛰려면 일반 모드에서 다음을 입력하십시오.

25%

1
솔루션에는 두 가지 단점이 있다고 생각 noremap J 25j합니다. 값 25을 하드 코딩 하므로 예를 들어 100 줄 창을 가로로 분할하면 매핑이 실제로 새 창의 50 %를 탐색합니다. 두 번째 옵션에 :25%대해서는 그것이 존재한다는 것을 알지 못했지만 테스트에서 첫 줄을 기준으로 위치에 커서를 놓는 것 같습니다 .100 줄 버퍼가 있고 25 % 앞으로 입력 :25%하면 타이핑 이 나옵니다. 커서 위치에 상관없이 25 행에서 또한이 기능을 설명하는 도움말 항목을 문서에서 찾을 수 없습니까?
statox

1
도움말 주제를 다음에서 발견했습니다 :h N%:-)
statox
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.