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?
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?
Câu trả lời:
Có lẽ ctrldvà ctrlucó 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 scroll
thành giá trị XX, bạn có thể sử dụng ctrldvà ctrludi chuyển 25% màn hình.
Ngoài ra, tôi nghĩ rằng đó :h scrolling
có 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>
và <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.
ctrl-E
và ctrl-Y
trong á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-D
là 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.
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+v
tiếp theo ctrl+u
để tương tự trên dòng let key="^D"
.
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.
Bạn có thể sử dụng ctrlevà ctrlyđể di chuyển trang theo một dòng lên xuống.
Sau đó, nếu bạn muốn di chuyển +/- 25%, bạn có thể sử dụng 20ctrlevà điều đó sẽ khiến bạn giảm 20 dòng.
Đây cũng là một câu hỏi được giải thích tốt tương tự với bạn: /programming/3458689/how-to-move-screen-without-moving-coder-in-vim
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>
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%
noremap J 25j
mã hóa giá trị 25
do đó, 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?