Оновлення : Зараз я переніс цей код, дещо перероблений відповідно до керівних принципів :help write-plugin
, до репозитарію Github .
Використання клавіатури
Ось що я маю в своєму .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
Особливості:
- Прокрутіть на основі
scroll
опції Vim .
- Настроювана швидкість прокрутки (налаштуйте аргумент часу
sleep
команди; я використовую десять мілісекунд). Примітка : так само, як уповільнення частоти кадрів на відео, якщо ви занадто сповільнюєте плавну прокрутку, це буде різка прокрутка, а не плавна прокрутка. Але все, що вам найкраще підходить.
- Працює в звичайному режимі або режимі вставки.
Примітка : всі, хто копіює та вставляє, пам’ятайте, що ^
символ позначає контрольний символ; copy-paste видасть недійсні результати, і їх потрібно вводити вручну!
^Y
- CTRL- Vтоді CTRL-Y
^E
- CTRL- Vтоді CTRL-E
Однак синтаксис <C-U>
і та <Enter>
стиль буквально вводяться як ці символи; команда map розумно перетворює їх на керування символами.
Використання миші
У запитанні згадується, що прокрутка за допомогою миші добре працює в GVim, але потрібне рішення для клавіатури. Це означає для мене, що запитувач може бути зацікавлений у вирішенні миші, якщо воно працює у звичайному терміналі Vim.
Для мене включення підтримки миші дозволяє плавно прокручувати колесо миші. Крім того, для мене плавна прокрутка є найважливішою, коли я оглядаюся (тобто в звичайному режимі), а не коли я редагую (у режимі вставки), і якщо я не активно редагую, потреба моїх рук залишатися на клавіатура постійно видаляється, тому це працює добре.
На основі цього питання , проте, здається, що деяким людям доводиться робити ще кілька налаштувань вручну, окрім простого ввімкнення миші (я просто використовую set mouse=n
):
У моєму .vimrc
є такі рядки
set mouse=a
map <ScrollWheelUp> <C-Y>
map <ScrollWheelDown> <C-E>