Cập nhật : Tôi hiện đã đẩy mã này, được cấu trúc lại phần nào theo các hướng dẫn tại :help write-plugin
, vào một repo Github .
Sử dụng bàn phím
Đây là những gì tôi có trong của mình .vimrc
:
function SmoothScroll(up)
if a:up
let scrollaction="^Y"
else
let scrollaction="^E"
endif
exec "normal " . scrollaction
redraw
let counter=1
while counter<&scroll
let counter+=1
sleep 10m
redraw
exec "normal " . scrollaction
endwhile
endfunction
nnoremap <C-U> :call SmoothScroll(1)<Enter>
nnoremap <C-D> :call SmoothScroll(0)<Enter>
inoremap <C-U> <Esc>:call SmoothScroll(1)<Enter>i
inoremap <C-D> <Esc>:call SmoothScroll(0)<Enter>i
Đặc trưng:
- Cuộn trên cơ sở của
scroll
tùy chọn Vim .
- Tốc độ cuộn có thể tùy chỉnh (điều chỉnh đối số thời gian của
sleep
lệnh; tôi sử dụng mười mili giây). Lưu ý : cũng giống như làm chậm tốc độ khung hình trên video, nếu bạn làm chậm quá trình cuộn mượt mà sẽ bị giật, cuộn không mượt. Nhưng bất cứ điều gì tốt nhất cho bạn.
- Hoạt động ở chế độ bình thường hoặc chèn.
Lưu ý : tất cả những gì bạn sao chép và dán, hãy nhớ rằng ^
ký tự chỉ ra một ký tự điều khiển; copy-paste sẽ tạo ra kết quả không hợp lệ và chúng phải được nhập thủ công!
^Y
- CTRL- Vthì CTRL-Y
^E
- CTRL- Vthì CTRL-E
Tuy nhiên, cú pháp <C-U>
và <Enter>
kiểu được gõ theo nghĩa đen là các ký tự đó; lệnh bản đồ chuyển đổi chúng thành các ký tự điều khiển một cách thông minh.
Sử dụng chuột
Câu hỏi đề cập rằng cuộn bằng chuột hoạt động tốt trong GVim, nhưng mong muốn một giải pháp bàn phím. Điều này ngụ ý với tôi rằng người hỏi có thể quan tâm đến giải pháp chuột nếu nó hoạt động trong thiết bị đầu cuối thông thường Vim.
Đối với tôi, bật hỗ trợ chuột cho phép cuộn chuột qua con lăn mượt mà. Ngoài ra, đối với tôi, cuộn mượt là điều quan trọng nhất khi tôi đang nhìn xung quanh (tức là ở chế độ bình thường), chứ không phải khi tôi đang chỉnh sửa (ở chế độ chèn) và nếu tôi không chủ động chỉnh sửa, thì tôi cần phải ở trên bàn phím luôn bị loại bỏ, vì vậy điều này hoạt động tốt.
Tuy nhiên, trên cơ sở của câu hỏi này , có vẻ như một số người sẽ phải thực hiện một số thiết lập thủ công hơn ngoài việc chỉ đơn giản là bật chuột (tôi chỉ sử dụng set mouse=n
):
Của tôi .vimrc
có những dòng sau
set mouse=a
map <ScrollWheelUp> <C-Y>
map <ScrollWheelDown> <C-E>