Ich habe kürzlich Ctrl+ Eund Ctrl+ YVerknüpfungen für Vim entdeckt, die den Bildschirm mit einem einzeiligen Schritt nach oben und unten bewegen, ohne den Cursor zu bewegen .
Kennen Sie einen Befehl, der den Cursor dort belässt, wo er sich befindet, aber den Bildschirm so bewegt, dass die Zeile mit dem Cursor zur ersten Zeile wird? (Ein Befehl für die letzte Zeile wäre ein schöner Bonus).
Ich kann dies erreichen, indem ich Ctrl+ E(oder Ctrl+ Y) die richtige Anzahl von Malen manuell drücke , aber einen Befehl zu haben, der dies irgendwie direkt tut, wäre schön.
Irgendwelche Ideen?
vim
scroll
cursor-position
ereOn
quelle
quelle
Antworten:
( Vorsichtzz , wenn Sie Caps Lockversehentlich eingeschaltet sind, speichern und beenden Sie
vim
!)quelle
xdotool
odertriggerhappy
. Zeigen Sie zum Schluss Ihren Feststelltaste-Status an (in Vimscript nicht möglich).xev -q
, müssencat /proc/bus/input/devices
Sie das Gerät finden , um den Status abzufragen und /evtest
oderthd ... --dump /dev/input/event<#>
zu überprüfen usw. Wenn Sie unbedingt eine systemweite Neuzuordnung vornehmen müssen, tauschen Sie mindestens zwei Sperren wie Kappen <--> num - aus. Das Problem ist jedoch, dass Sie vergessen, dass es aktiviert ist, denn wenn Sie es zuvor wollten, werden Sie es weiterhin verwenden, unabhängig von der Karte. Risiko, Vim vor Dateien / Benutzer / System zu brechen.confirm()
. Anstatt die Feststelltaste der Strg-Taste zuzuordnen, können Sie sie auch einem von Vim verstandenen, aber nicht zugeordneten Schlüssel oder einer Kombination zuordnen und dann die Feststelltaste ausschließlich im Einfüge- / Ersetzungsmodus von Hand oder mit etwas wie github.com/tpope/ emulieren. Vim-Capslock . Sie werden es wahrscheinlich nicht außerhalb von Vim benötigen, aber wenn Sie dies tun, schreiben Sie ein xmodmap-Skript, um Ihre Änderungen rückgängig zu machen, oder prüfen Sie, ob das Programm eigene Zuordnungen unterstützt (und machen Sie sich Notizen).Zusätzlich:
Ctrl- yund Ctrl- eändern Sie die Cursorposition nur, wenn sie vom Bildschirm verschoben wird.
Mit freundlicher Genehmigung von http://www.lagmonster.org/docs/vi2.html
quelle
:help CTRL-E
sagtMnemonic: Extra lines.
Für Vim muss sich der Cursor immer auf dem aktuellen Bildschirm befinden. Sie können jedoch die aktuelle Position mit einem Lesezeichen versehen und dann zu Ihrer Position zurückkehren.
quelle
Ctrl-O
für einen anderen wirklich großartigen, und "Backtick, Punkt" bringt Sie zurück zu dem Punkt, an dem Sie zuletzt bearbeitet haben.mg
, scrollen, gehen mit markieren'g
und fertig. Jetzt können Sie die konfigurierbare Taste aufrufen, um herumzugehen, und es fühlt sich an, als hätte der Cursor die aktuelle Position nie verlassen. Voilá!Hier ist meine Lösung in vimrc:
Damit der Cursor in der Mitte des Bildschirms bleibt und sich der Bildschirm nach oben oder unten bewegt.
quelle
Um die Cursor in der gleichen Spalte zu lassen , wenn Sie verwenden Ctrl+ D, Ctrl+ F, Ctrl+ B, Ctrl+ U, G, H, M, L,gg
Sie sollten die folgende Option definieren:
quelle
Ich bin überrascht, dass niemand die
Scrolloff
Option verwendet, mit der der Cursor in der Mitte der Seite bleibt. Probieren Sie es aus mit:Es ist die erste empfohlene Methode im Vim-Wiki und funktioniert gut.
quelle
:set scrolloff=4
der Cursor immer mindestens 4 Zeilen vom oberen oder unteren Rand des Fensters entfernt sein, damit Sie immer mindestens ein wenig Kontext haben.Ich habe diese Verknüpfungen in der Vergangenheit verwendet ( Hinweis: separate Tastenanschläge, dh tippen Sie auf z , lassen Sie los, tippen Sie auf die nachfolgende Taste):
z enter -> verschiebt die aktuelle Zeile an den oberen Bildschirmrand
z . -> verschiebt die aktuelle Zeile in die Mitte des Bildschirms
z - -> verschiebt die aktuelle Zeile nach unten
Wenn es nicht offensichtlich ist:
enterbedeutet die Returnoder EnterTaste.
.bedeutet die DOT- oder "Punkt" -Taste (
.
).-bedeutet die HYPHEN-Taste (
-
)Vermeidet für das, was es wert ist, z.die Gefahr des Speicherns und Schließens von Vi durch versehentliches Tippen, ZZwenn die Feststelltaste aktiviert ist.
quelle
Sie können Ihren Cursorbewegungsbefehlen eine Zahl voranstellen, die diesen Befehl so oft wiederholt
10Ctrl+ Emacht Ctrl+ E10 mal statt eins.
quelle
zEnter macht genau das, was diese Frage verlangt.
Es funktioniert dort, wo es seltsamerweise zznicht funktionieren würde (vim 7.4.1689 unter Ubuntu 2016.04 LTS ohne spezielle .vimrc)
quelle
Möglicherweise finden Sie Antworten auf " Scrollen von Vim relativ zum Cursor, benutzerdefinierte Zuordnung " hilfreich.
Sie können
ScrollToPercent(0)
diese Frage verwenden, um dies zu tun.quelle
Manchmal ist es nützlich, den Text mit den Tasten Kund zu scrollen J, daher habe ich diese Funktion "Bildlaufmodus" in meiner .vimrc (auch gebunden an zs).
Siehe scroll_mode.vim .
quelle
meine Mnemonik zum Scrollen ...
Wenn Sie zu anderen Antworten hinzufügen, achten Sie auch auf
ze
undzs
, was bedeutet: Bewegen Sie den Bildschirm nach links / rechts vom Cursor (ohne den Cursor zu bewegen).Schauen Sie sich auch die Position von
h
undl
undt
undb
und (mit QWERTZ-Tastatur)c-e
undc-y
(auch das "y" zeigt irgendwie nach unten) auf der Tastatur an, um sich zu merken, wo sich der Bildschirm bewegt.quelle
Ich habe ein Plugin geschrieben , mit dem ich durch die Datei navigieren kann, ohne die Cursorposition zu bewegen. Es basiert darauf, die Linien zwischen Ihrer Position und Ihrer Zielposition zu falten und dann über die Falte zu springen oder sie abzubrechen und sich überhaupt nicht zu bewegen.
Es ist auch einfach, schnell zwischen dem Cursor in der ersten Zeile, der letzten Zeile und dem Cursor in der Mitte zu wechseln j, indem Sie einfach darauf klicken koder lsich im Modus des Plugins befinden.
Ich denke, es würde hier gut passen.
quelle
Geben Sie vim ein und geben Sie Folgendes ein:
:help z
zist der vim-Befehl für das Neuzeichnen, sodass die Datei relativ zu der Position neu gezeichnet wird, an der Sie den Cursor positionieren. Sie haben folgende Möglichkeiten:
z+- Zeichnet die Datei mit dem Cursor oben im Fenster und dem ersten nicht leeren Zeichen Ihrer Zeile neu.
z-- Zeichnet die Datei mit dem Cursor am unteren Rand des Fensters und dem ersten nicht leeren Zeichen Ihrer Zeile neu.
z.- Zeichnet die Datei mit dem Cursor in der Mitte des Fensters und dem ersten nicht leeren Zeichen Ihrer Zeile neu.
zt- Zeichnet die Datei mit dem Cursor oben im Fenster neu.
zb- Zeichnet die Datei mit dem Cursor am unteren Rand des Fensters neu.
zz- Zeichnet die Datei mit dem Cursor in der Mitte des Fensters neu.
quelle