2013-06-05 16 views
8

Ich muss oft größere vertikale Auswahl z. wenn sie mit (wir bleiben zivilisierte) „Getter/Setter“ -reichen Schnittstellen arbeiten, zVermeiden Sie zusätzliche Leerzeichen beim Einfügen vertikaler Auswahl

A very long line with something I would like to copy: ABC$ 
A short line with nothing$ 
A very long line with something I would like to copy: ABC$ 

Hier habe ich $ verwendet, um das Ende der Zeile angezeigt. Ich mache nun eine visuelle vertikale Auswahl auf z.B. die A in der Spalte 55 über alle Zeilen, ziehen Sie es und fügen Sie es mit P vor dieser Spalte und erhalten Sie zusätzliche Leerzeichen eingefügt in die zweite Zeile.

A very long line with something I would like to copy: AABC$ 
A short line with nothing        $ 
A very long line with something I would like to copy: AABC$ 

Gibt es eine Möglichkeit, die zusätzlichen Leerzeichen zu vermeiden? Ändern Zeichen in der vertikalen visuellen Auswahl scheint nicht von diesem Problem zu leiden.

+0

Egal, was ich tue Ich bin nicht in der Lage, die zusätzlichen Leerzeichen zu kopieren ... welche Version von vim und Umgebung? –

+0

@ExplosionPills: Ich sehe dies für 7.3.931 und 7.3.1070, selbst wenn '-u/dev/null' in der Terminal-Version verwendet wird. Die Readline-Versionen müssen sehr unterschiedlich sein, haben das aber nicht überprüft. –

+0

Was ergibt ': verbose set virtualedit?' Produzieren? Wie reißt du Text: 'v',' V' oder ''? Ich kann dies erzeugen, indem ich einen visuellen Block reiße und virtuose it = all setze. Ich stelle mir vor, 'set virtualedit = block' würde den gleichen Effekt haben. Schnelle Lösung: Ziehe Linien mit "V". –

Antwort

4

So funktioniert der visuelle Blockzug. Sie kopieren Spalte 55. Dann einfügen mit P. Ihre zweite Zeile erstreckt sich nicht so weit wie Spalte 55. Wenn Sie sie also einfügen, wird diese Zeile für Sie erweitert.

Verwenden Sie :reg, um auf Ihr Register zu schauen. Sie werden bemerkt A^J ^JA als Wert für "", das unbenannte Register. Die ^J symbolisieren Zeilenumbrüche. Beachten Sie den Abstand zwischen ^J 's. So funktioniert ein visual-block mode yank mit leerem Raum, indem er mit Leerzeichen gefüllt wird.

+0

Vielen Dank für die Klarstellung. Zu meiner Frage: Gibt es eine Möglichkeit, die "Autoextension" kürzerer Linien beim Rausche zu vermeiden? Ich weiß, wie man Leerräume bei EOL kürzt, möchte dies jedoch vermeiden, da ich mit Normalsterblichen arbeite und keine Formatierungsänderungen einführen möchte, wenn ich die Funktionalität ändere. –

+0

Es gibt keine Möglichkeit, die automatische Erweiterung zu stoppen, die mir bekannt ist. Schneiden Sie den Leerraum nach dem Einfügen mit ': '[,'] s/\ s * $ //' ab. Ich denke Visual-Block-Modus ist wahrscheinlich nicht die richtige Lösung für diesen Fall. Ich schlage vor, Sie schauen auf Substitution (': h: s') und/oder Makros (': h q'). –

+0

Argh, Trimmen würde vorhandene überschüssige Leerzeichen beseitigen. Ich denke, es ist Zeit, mein Muskelgedächtnis neu zu trainieren, wenn hier keine Lösung gefunden wird. –