Wie kann ich X Bytes ausgehend von der aktuellen Cursorposition (einschließlich Zeilenumbrüchen) vorwärts verschieben?
[count]go
könnte verwendet werden, um X Bytes vom Anfang des Puffers vorwärts zu bewegen. Ich habe es versucht Shift + V, G, [count]go
(vorausgesetzt, das [count]go
würde ab dem Beginn meiner Auswahl mit dem Zählen beginnen), aber leider hat das auch nicht funktioniert, da das go
Zählen erst ab dem Beginn des Puffers beginnt.
Ich habe auch versucht :set rulerformat=%o
, den aktuellen Byte-Offset anzuzeigen (wie durch Springen zu einem Byte-Offset und Anzeigen der Position als Byte-Offset vorgeschlagen ), die Zahlen in meinem Kopf hinzugefügt und schließlich ausgegeben [count]go
. Das funktioniert, ist aber nicht sehr praktisch ...
cursor-movement
binary-file
Rob W.
quelle
quelle
Xl
(wobeiX
die Anzahl der Zeichen ist) oder die Anzahl der Zeichen gefolgt vom Rechtspfeil verwenden.Antworten:
Diese Suche bewegt 40 Zeichen (allerdings keine Bytes) vorwärts:
indem Sie nach genau 40 Zeichen (
\{40}
) jeglicher Art suchen, einschließlich newline (\_.
), und den Cursor am Ende der Suche platzieren (/e
). Siehe: http://vimregex.com/#Non-Greedy ,:help search-offset
und:help \_
Siehe auch
:h 23.4
für die binäre Bearbeitung.Update: Basierend auf dieser Antwort ist hier eine Funktion, die zum Byte-Offset springt:
Kann so verwendet werden:
oder geben Sie die zugeordnete Tastaturzuordnung mit einer Anzahl ein:
Wenn Sie keine Zählung verwenden, wird die vorherige Zählnummer erneut verwendet. Sie können also tun:
40CTRL-C CTRL-C CTRL-C 30CTRL-C CTRL-C
40, 40, 40, 30, 30 Bytes usw. springen.Drücken Sie,
Ctrl-O
um zurückzuspringen (siehe Kommentare in der Funktion).quelle
[count]go
Prozess in einer vim-Funktion zu automatisieren (aktuellen Byte-Offset lesen, dort die gewünschte Nummer hinzufügengo
).[count]go
und Ihrer Methode: 1)[count]go
Fügt der Sprungliste ein Element hinzu, damit ichCtrl+O
schnell zu meiner vorherigen Position zurückkehren kann. 2)[count]go
kann ohne verwendet werden:
, ist es möglich, eine neue einzuführen[count]GO
, die Ihr Ding macht. Könnten Sie Ihre Antwort so bearbeiten, dass sie auch dem Verhalten von entsprichtgo
?Am Ende habe ich die folgende Lösung verwendet, die die Logik aus meiner Frage implementiert.
[count]GO
zu bewegen[count]
Bytes nach vorn.[count]Go
zu verschieben[count]
Bytes nach hinten.Fügen Sie dies zu Ihrem hinzu
.vimrc
:Vielen Dank an VanLaser für seine erste Implementierung, die mich in die richtige Richtung gebracht hat.
quelle