Ich habe eine ziemlich große Datei, ich muss den gesamten Inhalt irgendwo kopieren, aber wenn ich die Seite nach unten scrolle, werden alle von mir ausgewählten Daten nicht ausgewählt. Ich könnte einfach Block für Block kopieren und einfügen, aber ich würde es viel einfacher finden, da es viele Daten gibt, nur den Inhalt an das Ende der aktuellen Zwischenablagedaten anhängen zu können. Ist das möglich?
Auf diese Weise kann ich eine Tastenkombination verwenden, mit der ich diese in die Zwischenablage kopieren kann:
I am some nice new text.
Wenn das schon da ist:
I am the old text.
Und lassen Sie es beim Einfügen so aussehen:
I am the old text.
I am some nice new text.
Es gibt also 3 Dinge, die ich wirklich gerne hätte (ich hätte 3 separate Tastaturkürzel, um dies zu tun):
Hängen Sie die Daten an das Ende der Zwischenablage an und lassen Sie sie RETURNdavor einfügen (wie im obigen Beispiel gezeigt).
Hängen Sie die Daten an das Ende der Zwischenablage an, lassen Sie RETURNsie jedoch so, dass sie nicht davor stehen, damit sie zunächst in derselben Zeile fortgesetzt werden.
Haben Sie dies alles, aber damit die Daten am Anfang der Zwischenablage vor allen Daten stehen, die aktuell dort sind.
Ich verwende Ubuntu GNOME 16.04 mit GNOME 3.20.
Antworten:
Es ist einfach, aber Sie müssen
xsel
zuerst das Tool installieren :TL; DR: Hier sind die Befehle, die Sie wahrscheinlich am Ende für Ihre Verknüpfungen verwenden möchten. Ich verwende die Versionen mit
printf
überall für Einheitlichkeit und einfachere Anpassung, auch wenn eine einfachere Variante genug gewesen wäre:Hängen Sie die Auswahl direkt an das Ende der Zwischenablage an:
Fügen Sie die Auswahl nach einem Zeilenumbruch an das Ende der Zwischenablage an:
Fügen Sie die Auswahl direkt an den Anfang der Zwischenablage an:
Fügen Sie die Auswahl nach einem Zeilenumbruch an den Anfang der Zwischenablage an:
Sie alle enthalten das Zurücksetzen des Primärpuffers nach dem Anhängen an die Zwischenablage, um zu verhindern, dass derselbe Inhalt doppelt angehängt wird. Wenn Sie das nicht möchten, entfernen Sie das
; xsel -c
am Ende jedes Befehls.Lange Erklärung:
Sie müssen wissen, dass X 3 Puffer enthält, die primäre Auswahl, die sekundäre Auswahl und die Zwischenablage .
Sie kennen die Zwischenablage von Ctrl+ C, Ctrl+ Vusw. Es ist der Puffer, den Sie normalerweise zum Kopieren und Einfügen von Inhalten verwenden.
Die primäre Auswahl ist jedoch der Puffer, der immer automatisch den von Ihnen ausgewählten Text enthält, unabhängig davon, in welchem Fenster er sich befindet und ohne zusätzliche Benutzerinteraktion.
Wir haben nur ein Problem: Der Puffer wird aktualisiert, sobald Sie ein Textschnipsel auswählen. Er wird jedoch nicht gelöscht, wenn Sie auf eine andere Stelle klicken, um die Auswahl abzubrechen. Es enthält weiterhin den Inhalt Ihrer letzten Auswahl.
Die sekundäre Auswahl wird nur von wenigen Programmen verwendet und ist für uns hier nicht interessant.
Das heißt, wir können das Verhalten von Ctrl+ Cmit diesem Befehl nachahmen, der die primäre Auswahl (zuletzt hervorgehobener Text) in die Zwischenablage kopiert:
xsel
Ohne Argumente wird der Inhalt der primären Auswahl in STDOUT gedruckt.xsel -ab
schreibt (-i
) die Daten von STDIN in die Zwischenablage (-b
).Um Daten direkt an den aktuellen Inhalt der Zwischenablage anzuhängen (ohne Zeilenumbruch dazwischen), anstatt sie zu ersetzen, verwenden wir
-a
stattdessen die Option-i
. Dieser Befehl hängt das zuletzt ausgewählte Textausschnitt an den aktuellen Inhalt der Zwischenablage an:Wenn Sie wirklich einen zusätzlichen Zeilenumbruch oder eine andere Formatierung wünschen, können wir die Daten durch
printf
oder ein anderes Tool leiten, mit dem Sie sie verarbeiten möchten. Hier ist ein Beispiel, das sowohl die letzte Auswahl als auch den aktuellen Inhalt der Zwischenablage liest und sie mithilfe einer neuen Zeile zusammenfügt:xsel -b
Gibt den aktuellen Inhalt der Zwischenablage zurück. Die Formatierungszeichenfolge,printf
die%b
als Platzhalter für die Argumente verwendet wird,\n
stellt einen Zeilenumbruch dar. Weitere Informationen erhalten Sieprintf
durch Eingabeman printf
.Durch Umschalten der beiden Argumente am Ende der Zeichenfolge können Sie ihre Reihenfolge umkehren und anstelle des Endes an den Anfang anhängen.
Wenn Sie vermeiden möchten, dass dieselben Daten versehentlich zweimal an die Zwischenablage angehängt werden (Sie müssen sie erneut auswählen, wenn Sie sie zweimal anhängen möchten!), Können Sie den primären Auswahlpuffer manuell löschen, nachdem der Befehl folgendermaßen ausgeführt wurde:
Führen Sie dies einfach nach dem grundlegenden Befehl zum Anhängen der Zwischenablage folgendermaßen aus:
Wenn Sie dies alles wissen, können Sie Befehle für Ihre Tastaturkürzel schreiben, die genau das tun, was Sie wollen. Denken Sie jedoch daran, dass unsere Einzeiler alle Bash-Funktionen wie Piping stark nutzen. Sie müssen sie daher mit Bash ausführen:
Im Abschnitt TL; DR oben in der Antwort finden Sie eine Befehlsliste, die zum Erstellen von Verknüpfungen geeignet ist.
quelle
printf
Befehlen. Es fehlten einige Anführungszeichen, die dazu führten, dass alle Leerzeichen in den kopierten Daten ersetzt wurden. Es ist jetzt behoben.Der X-Server verfügt über mehrere Zwischenablagen. Die mit Ctrl+ Cwird als Zwischenablage bezeichnet. Diejenige, in der Sie etwas hervorheben, wird als primär bezeichnet.
xclip
ermöglicht das Einfügen der Ausgabe von beiden. Zum Beispiel habe ich einen Teil Ihrer Frage kopiert, aber einen anderen Text im Terminal hervorgehoben:Sie können diese Idee auch in einem Skript verwenden, das mit einer Tastenkombination verbunden ist. Tatsächlich habe ich ein Skript geschrieben, das als Github-Gist veröffentlicht wird
Die Grundidee besteht darin, es an die Tastenkombination zu binden. Markieren Sie, was angehängt werden soll, und drücken Sie die Verknüpfung. Zum Beispiel habe ich meine an Ctrl+ Alt+ gebunden V. Genauer Befehl ist
python /path/to/file.py
Anwendungsbeispiel:
I have a rather large file
Teil aus Ihrem Beitrag und kopieren Sie es mit Ctrl+CThat is so that I can have a keyboard shortcut
I have a rather large fileThat is so that I can have a keyboard shortcut
Skriptquelle
Anmerkungen:
xclip
muss über installiert werdensudo apt-get install xclip
sed
und den Python-re
Stil) verwenden kann, um eine wiederholte Zeichenfolge an die Zwischenablage anzuhängen. Wenn Sie beispielsweise häufig dieselbe Zeichenfolge immer wieder anhängen müssen, können Sie den folgenden Python-re
Regex verwenden:quelle
Hier ist eine weitere sehr einfache Methode, die ein kurzes Bash-Skript verwendet. Stellen Sie zunächst sicher, dass Sie xclip installiert haben. Erstellen Sie dann Ihr Bash-Skript wie folgt:
Nennen wir diese Datei apndpc.sh und legen sie in einem Ordner ab, z. B. ~ / myscripts. Binden Sie nun einen benutzerdefinierten Schlüssel daran. Führen Sie dies über Systemeinstellungen >> Tastatur aus und klicken Sie auf die Registerkarte Verknüpfungen. Klicken Sie auf Benutzerdefinierte Verknüpfungen und dann auf + Zeichen, um die gewünschte Tastenkombination hinzuzufügen. In das Befehlsfeld geben Sie:
bash -c 'bash ~ / myscripts / apndclp.sh'
Definieren Sie dann Ihre Tastenkombination. Ich benutze ALT + 3, um die Aktion auszulösen.
Das ist es. Sie sind bereit für Ihren groß angelegten Kopiervorgang. Verwenden Sie die normale Strg + C-Taste (oder klicken Sie mit der rechten Maustaste und wählen Sie Kopieren), um den ersten Textabschnitt zu kopieren. Wählen Sie den nächsten Block aus (wählen Sie nur NICHT kopieren) und drücken Sie dann die Tastenkombination (ATL + 3). Dadurch wird der ausgewählte Text an die Zwischenablage angehängt. Mach so weiter, bis du fertig bist. Dann wie gewohnt einfügen, dh. STRG + v (oder mit der rechten Maustaste klicken und Einfügen auswählen), um den endgültig gesammelten Text zu speichern.
Wenn Sie die Zeichenfolgenmanipulation im obigen Skript nicht mögen, verwenden Sie stattdessen dieses Skript:
quelle
Ich benutze einen Zwischenablage-Manager namens clipit.
Wann immer ich dann die letzten Dinge auf der Tastatur sehen möchte, mache ich das auf der Konsole:
Der Verlauf der Zwischenablage wird getrennt durch gedruckt
\n
.quelle