Cuộn một phần tư (25%) màn hình lên hoặc xuống


14

Tôi thường thấy việc cuộn một trang đầy đủ quá mất phương hướng, nửa trang quá nhiều, nhưng một phần tư là vừa phải. Tôi hiện đang làm điều đó chỉ bằng cách giữ các phím mũi tên.

Làm cách nào để cuộn 25% trang xuống và dễ dàng?


1
kiểm tra chức năng gạch bỏ trong câu trả lời này: stackoverflow.com/a/3102890
Sundeep

Câu trả lời:


19

Có lẽ ctrldctrlucó thể là những gì bạn đang tìm kiếm. Theo mặc định, họ di chuyển một nửa màn hình.

Từ :h CTRL-D:

Cửa sổ cuộn xuống dưới trong bộ đệm. Số lượng dòng đến từ tùy chọn 'cuộn' (mặc định: một nửa màn hình).

Nếu [đếm] đã cho, trước tiên hãy đặt tùy chọn 'cuộn' thành [đếm].

Điều đó có nghĩa là lần đầu tiên bạn muốn cuộn trong cửa sổ, bạn có thể thực hiện XXctrldtrong đó XX là 25% số dòng trong cửa sổ của bạn. Khi nó đặt scrollthành giá trị XX, bạn có thể sử dụng ctrldctrludi chuyển 25% màn hình.

Ngoài ra, tôi nghĩ rằng đó :h scrollingcó thể là thú vị cho bạn.


Biên tập

Và đây là một giải pháp khác với chức năng và một số ánh xạ để thêm vào .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>

Hàm sẽ lấy chiều cao của cửa sổ hiện tại và theo đó, tham số của nó sẽ cuộn màn hình lên hoặc xuống một phần tư chiều cao.

Các ánh xạ sẽ gọi hàm, cái đầu tiên đi lên và cái thứ hai đi xuống.

Tất nhiên, bạn có thể thay đổi <up><down>sang một số phím khác nếu bạn muốn giữ hành vi mặc định của các phím mũi tên.


2
Có vẻ như nó có thể có ý nghĩa hơn để sử dụng ctrl-Ectrl-Ytrong ánh xạ, bởi vì a). sau đó bạn có các phím tắt riêng cho cả cuộn 1/2 trang và 1/4 trang. b). hành vi của ctrl-U/ ctrl-Dlà nhất quán và không phụ thuộc vào việc trước đây bạn có sử dụng ánh xạ hay không.
Giàu

Tôi không hiểu lưu ý quan trọng của bạn. Bạn có ý nghĩa gì khi nhập thủ công? Hiện đang sử dụng điều này sẽ xóa một dòng thay vì di chuyển trang.
Louis Hồng

@LouisHong Xem dòng let key="^U"giữa phần trích dẫn kép có nghĩa là đại diện cho mã khóa của ctrl+u. Vì vậy, nếu bạn đã sao chép chức năng trong vim, hãy đặt con trỏ của bạn vào lần nhấn ci"dấu ngoặc kép đầu tiên để sửa đổi nội dung của dấu ngoặc kép và sau đó nhấn ctrl+vtiếp theo ctrl+uđể tương tự trên dòng let key="^D".
statox

@Rich: Yup đó là một điểm tốt. Tôi đã sử dụng các phím mũi tên bởi vì đó là những gì OP nói anh ấy đã sử dụng nhưng quan điểm của bạn có liên quan.
statox

@statox Bạn hiểu lầm tôi! (Tôi đã không rõ ràng). Tôi có nghĩa là sử dụng let key="^Y"thay vì let key="^U". Nó sẽ tạo ra hành vi tương tự nhưng không ảnh hưởng đến 'scroll'cài đặt.
Giàu


3

Tôi thay đổi cách tiếp cận statox để nó di chuyển phù hợp hơn trên các đường kẻ. Nếu bạn muốn một phần tư bước, thay đổi 0,618 trở lại 0,25 hoặc bất cứ điều gì.

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

Nếu bạn muốn có một câu trả lời chung chung và không chính xác 25%, bạn có thể tính số dòng bình thường trên một trang bằng cách chia cho 25 và đặt một số ánh xạ hệ thống. Chẳng hạn, nếu bình thường bạn có khoảng 100 dòng trên màn hình thì 25% trong số đó là 25 dòng để bạn có thể đặt ánh xạ chính trên một thứ như vốn J và K của bạn để nhanh chóng di chuyển lên và xuống 25 dòng

noremap J 25j
noremap K 25k

Nếu bạn muốn chỉ cần nhảy đến dấu quý của toàn bộ tệp thì ở chế độ bình thường, chỉ cần gõ:

25%

1
Tôi nghĩ rằng có hai nhược điểm với giải pháp của bạn: noremap J 25jmã hóa giá trị 25do đó, ví dụ khi bạn chia theo chiều ngang một cửa sổ 100 dòng, ánh xạ của bạn sẽ thực sự điều hướng 50% các cửa sổ mới. Về tùy chọn thứ hai của bạn, :25%tôi không biết nó tồn tại nhưng từ các thử nghiệm của tôi, dường như nó đặt con trỏ lên một vị trí dựa trên dòng đầu tiên: nếu tôi có bộ đệm 100 dòng và tôi muốn di chuyển 25% về phía trước :25%sẽ mang lại cho tôi trên dòng 25 bất kể con trỏ của tôi ở đâu. Ngoài ra, bạn có thể vui lòng đặt chủ đề trợ giúp mô tả tính năng này mà tôi không thể tìm thấy nó trong tài liệu không?
statox

1
Tôi tìm thấy chủ đề trợ giúp tại :h N%:-)
statox
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.