Update : Ich habe diesen Code, der gemäß den Richtlinien unter etwas überarbeitet wurde, jetzt :help write-plugin
in ein Github-Repo verschoben .
Verwenden der Tastatur
Folgendes habe ich in meinem .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
Eigenschaften:
- Scrollen Sie auf der Basis der Vim-
scroll
Option.
- Anpassbare Bildlaufgeschwindigkeit (Zeitargument des
sleep
Befehls anpassen ; ich verwende zehn Millisekunden). Hinweis : Genau wie beim Verlangsamen der Bildrate in einem Video wird beim ruckeligen Scrollen das ruckartige Scrollen ruckartig und nicht das sanfte Scrollen ausgeführt. Aber was auch immer für Sie am besten funktioniert.
- Funktioniert im Normal- oder Einfügemodus.
Hinweis : Denken Sie beim Kopieren und Einfügen daran, dass das ^
Zeichen ein Steuerzeichen angibt. Kopieren-Einfügen führt zu ungültigen Ergebnissen und diese müssen manuell eingegeben werden!
^Y
- CTRL- Vdann CTRL-Y
^E
- CTRL- Vdann CTRL-E
Die Syntax <C-U>
und <Enter>
style werden jedoch buchstäblich als diese Zeichen eingegeben. Der Befehl map konvertiert sie intelligent in Steuerzeichen.
Verwenden der Maus
In der Frage wird erwähnt, dass das Scrollen mit der Maus in GVim gut funktioniert, aber eine Tastaturlösung erwünscht ist. Dies bedeutet für mich, dass der Fragesteller möglicherweise an einer Mauslösung interessiert ist, wenn diese im regulären Terminal Vim funktioniert.
Wenn ich die Mausunterstützung einschalte, kann ich problemlos durch das Mausrad scrollen. Außerdem ist für mich das reibungslose Scrollen am wichtigsten, wenn ich mich umschaue (dh im normalen Modus), nicht wenn ich bearbeite (im Einfügemodus) und wenn ich nicht aktiv bearbeite, müssen meine Hände auf dem bleiben Die Tastatur wird jederzeit entfernt, sodass dies gut funktioniert.
Auf der Grundlage dieser Frage scheint es jedoch, dass einige Leute mehr manuelle Einstellungen vornehmen müssen, als nur die Maus einzuschalten (ich benutze nur set mouse=n
):
Mein .vimrc
hat die folgenden Zeilen
set mouse=a
map <ScrollWheelUp> <C-Y>
map <ScrollWheelDown> <C-E>