Ich möchte oft kopieren und mehrere Spalten einfügen, zum Beispiel eine Spalte einfügen
line one
line two
line three
Jetzt möchte ich eine weitere Säule dahinter ziehen können. Angenommen, mein Kill-Puffer hat Folgendes:
added to one
added to two
added to three
Welchen Befehl müsste ich aufrufen, um Folgendes zu erhalten:
line one added to one
line two added to two
line three added to three
Aktualisieren
Die Verwendung der Rechteckfunktionalität von Emacs hilft einiges, ist aber immer noch nicht optimal. Wenn Sie beispielsweise Emacs im grafischen Modus verwenden und aus externen Programmen ziehen, dh die Copy-Paste-Funktion Ihres Betriebssystems verwenden, verfügt der Kill-Buffer über keine rechteckigen Metainformationen, sodass das rechteckige Ziehen nicht funktioniert. Ein weiteres Problem ist, wenn Sie Spalten mit unterschiedlicher Innenbreite haben:
short line *
a much larger line which goes on
short line again
Und wenn Sie einen rechteckigen Ruck haben möchten, müssen Sie Ihren Zeiger an der markierten Stelle (*) platzieren. Obwohl dies mit drei Zeilen trivial ist, kann es ziemlich umständlich sein, sicherzustellen, dass Sie den Zeiger am äußersten Rand der ersten Spalte platzieren.
Antworten:
Hier ist ein einmaliger Befehl, mit dem Sie jede Zeile des aktuellen Kill am Ende jeder nachfolgenden Zeile ab der aktuellen Zeile ziehen können.
Die Implementierung ist ziemlich einfach. Nehmen Sie das
current-kill
, teilen Sie es nach Linien. Dann für jede Trennlinie: Gehen Sie zum Ende der Trennlinie, fügen Sie ein Leerzeichen ein, fügen Sie eine Linie ein und bewegen Sie sich dann eine Zeile vorwärts.Dies könnte auch mit einem wiederholbaren Makro erfolgen, das eine Zeile von einer Stelle im Puffer zum Ende einer Zeile in einem anderen Teil des Puffers verschiebt.
quelle