Wie kann ich das einzelne Zeichen, auf dem der Cursor steht, ziehen (kopieren)?

49

Ich kenne viele Möglichkeiten, Dinge zu kopieren:

yiw= yank in aktuellem Wort
yaw= yank alles Wort (schließt ein
yy abschließendes Leerzeichen ein) = yank die aktuelle Zeile
3yy= yank drei Zeilen beginnend mit der aktuellen
yap= yank alle Absätze (schließt abschließende neue Zeile ein)

Ich kann auch ein einzelnes Zeichen löschen oder ändern:

x= lösche das Zeichen unter dem Cursor
r= ersetze das Zeichen unter dem Cursor

Aber wie um alles in der Welt kopieren Sie einfach ein einzelnes Zeichen unter den Cursor?

Meine Motivation ist, dass ich in Perl 6 programmiere und einige der Operatoren Unicode-Zeichen sind. Im Moment verwende ich zum Beispiel Tadziks Perl 6 Config :: INI-Code als Ausgangspunkt für einen benutzerdefinierten Parser und hätte gerne nur dieses eine französische Anführungszeichen (einen Hyperoperator) aus dieser Zeile kopiert :

my %hash = $<sections>».ast;

Ich könnte die zweizeilige "Texas" -Version des Hyper-Operators verwenden >>, aber ich dachte, das sieht besser und weniger zweideutig aus als >>>:

my %hash = $<sections>>>.ast;

Bildbeschreibung hier eingeben
Bildbeschreibung hier eingeben

Christopher Bottoms
quelle
1
yl
Stellen Sie
@ VanLaser Gute Idee! Ich dachte, dass Bewegung nicht funktionieren würde, weil ich nur diesen einen Charakter wollte. Ihr Vorschlag eignet sich jedoch hervorragend für ASCII. Poste das als Antwort und ich stimme ab. Interessanterweise funktioniert es mit diesem Unicode-Zeichen nicht, aber ytX(" yank til X") scheint zu funktionieren, wenn Xsich das Zeichen rechts befindet.
Christopher Bottoms
Ich frage mich, ist das ein Zeichen, sei es Unicode, oder gibt es nicht zwei Zeichen, die mit der Vim- concealFunktion ausgeblendet / ersetzt wurden ?
VanLaser
@ VanLaser Scheint wie zwei "Zeichen".
Christopher Bottoms
BTW, wie stellst du den »Charakter vor?
VanLaser

Antworten:

41

Zusammensetzen des yank Betrieb mit dem so oft verwendet , „ um ein Zeichen nach rechts“ Bewegung sollte funktionieren: yl.

Übrigens (um einen OP-Kommentar zu kommentieren), für mich »kann auf diese Weise in gVim oder Terminal Vim gezogen werden. Vielleicht ein (Datei-) Codierungsproblem?

VanLaser
quelle
4
Rucken »funktioniert auch gut für mich. Ich vyziehe immer einen einzelnen Charakter. Ich bin nicht sicher, warum ich das benutze yl, aber vielleicht hatte ich einmal einen bewussten Grund, aber jetzt ist es nur ein Reflex.
Jjaderberg
3
Ich habe immer getan , y<space>dachte , es das Zeichen unter dem Cursor war Ruck, und ich würde es als eine Antwort hinzuzufügen , aber nachdem die Hilfe Überprüfung Ich stelle fest , <space>und ldasselbe sind.
Brett Y
Das ist schön und scheinbar noch einfacher zu treffen, außer vielleicht, wenn das Feld als Anführer verwendet wird.
VanLaser
1
@jjaderberg Ich mag deinen Kommentar, bitte poste ihn als Antwort. Vielen Dank!
Christopher Bottoms
1
@brettanomyces Ich mag deinen Kommentar, bitte poste ihn als Antwort. Vielen Dank!
Christopher Bottoms
14

Normalerweise drücke ich vy( visuelles Ziehen ), manchmal xu( Löschen rückgängig machen ) auch. Wenn Sie den Buchstaben vor Ihren Cursor ziehen möchten, können Sie stattdessen lvyauch drücken Xu. Ich denke, das ist der Grund, warum ich xufür den Strom drücke . :-)

Beachten Sie, Xudass der Cursor auf dieses Zeichen bewegt wird.

Kent
quelle
Du meinst hvy. Ich habe versucht, es zu bearbeiten, aber anscheinend ist das Korrigieren eines Zeichens in einem vim-Befehl keine signifikante Änderung, die akzeptiert werden kann.
Shahbaz
9

Die einfachste Möglichkeit, die ich kenne, besteht darin x, das Zeichen zu löschen, das es auch in den Puffer legt, und es dann Pzurückzusetzen. Sie können dann den Cursor bewegen und das Zeichen mit p(nach dem Cursor) oder P(vor dem Cursor) an der gewünschten Stelle einfügen , solange Sie den Puffer nicht ändern.

BruceK
quelle