Wie kopiere ich Text von der Befehlszeile in die Zwischenablage, ohne die Maus zu benutzen?

10

Ich versuche herauszufinden, wie der aktuelle Text in einer Befehlszeile in die Zwischenablage kopiert werden kann, ohne die Maus zu berühren. Mit anderen Worten, ich muss den Text nur mit der Tastatur auswählen. Ich habe eine halbe Lösung gefunden, die zur vollständigen Lösung führen kann:

Ctrl+a - Gehen Sie zum Zeilenanfang.

Ctrl+k - schneidet die gesamte Linie.

Ctrl+y - zieht den ausgeschnittenen Text zurück.

Alternativ kann ich auch Ctrl+udie ersten 2 Schritte ausführen.

Das funktioniert natürlich, aber ich versuche herauszufinden, wo genau der geschnittene Text gespeichert ist. Gibt es eine Möglichkeit, ohne Verwendung darauf zuzugreifen Ctrl+y? Ich bin mir dessen bewusst xclipund verwende es sogar, um Text direkt in die Zwischenablage zu leiten. Daher habe ich darüber nachgedacht, die von Ctrl+kbis gespeicherten Daten weiterzuleiten, bin mir xclipaber nicht sicher, wie ich das tun soll.

Die Methode, die ich bisher erhalten habe, besteht darin, ein Skript zu schreiben , das am Anfang der Zeile und am Ende der Zeile xdotoolhinzugefügt wird, und dann die Eingabetaste zu drücken ( ein benutzerdefinierter Alias, an den im Grunde genommen weitergeleitet wird ). Dies funktioniert auch, ist aber keine wirklich "saubere" Lösung.echo| zxczxcxclip

Ich benutze Cshell, wenn das einen Unterschied macht.

EDIT: Ich möchte nicht screenals Lösung verwenden, habe vergessen, das zu erwähnen.

Vielen Dank!

Sancho Pancho
quelle
Nicht verwandt, aber auch gut zu wissen: Shift-Ins fügt die Auswahl in einem xterm ein, wenn Sie nicht nur Text ausschneiden, sondern auch einfügen möchten.
Dirkt

Antworten:

7

Wenn Sie xtermoder ein Derivat verwenden, können Sie Tastenkombinationen einrichten, um eine Textauswahl zu starten und zu beenden, und sie als X11-Primärauswahl oder als Cutbuffer speichern. Siehe man xterm. Fügen Sie beispielsweise Folgendes hinzu ~/.Xdefaults:

XTerm*VT100.Translations: #override\n\
    <Key>KP_1: select-cursor-start() \
            select-cursor-end(PRIMARY, CUT_BUFFER0)\n\
    <Key>KP_2: start-cursor-extend() \
            select-cursor-end(PRIMARY, CUT_BUFFER0)\n

Sie können nur einen XTerm*VT100.TranslationsEintrag haben. Aktualisieren Sie den X11-Server mit dem neuen Dateiinhalt mit xrdb -merge ~/.Xdefaults. Starten Sie eine neue xterm.

Wenn Sie nun an der Eingabeaufforderung Eingaben vornehmen, wird durch Eingabe 1auf dem Ziffernblock die Auswahl von Text an der aktuellen Textcursorposition gestartet, ähnlich wie bei Taste 1 unten auf der Maus. Bewegen Sie den Cursor mit den Pfeiltasten 2und drücken Sie dann auf den Ziffernblock. Der dazwischen liegende Text wird hervorgehoben und in die primäre Auswahl und den Schnittpuffer 0 kopiert. Offensichtlich können andere besser geeignete Tasten und Aktionen ausgewählt werden. Sie können die Auswahl auch mit Bindungen wie einfügen insert-selection(PRIMARY).

meuh
quelle
Das ist toll! Ich hatte keine Ahnung, dass du das tun könntest. Sehr hilfreich! Ist es möglich, es in der Konsole zu verwenden?
Sancho Pancho
2
Ich habe mir das Handbuch von konsole kurz angesehen, aber diese Art der Steuerung wird nicht erwähnt. Es ist unwahrscheinlich, dass dies bei den meisten Terminalemulatoren der Fall ist, da sie Einstellungen bevorzugen, die über Menüs und Dialoge einfacher zu verwalten sind.
Meuh
Die translationsRessource ist die hier und da erwähnte X Toolkit-Funktion, die in anderen Toolkits kein Gegenstück hat. Sie können jedoch mit dieser keymapFunktion zwischen Übersetzungssätzen wechseln (beachten Sie den Kommentar zu "Sie können nur eine haben").
Thomas Dickey
Danke für alle Kommentare. Sie haben immer noch nichts über die Zwischenablage von Strg-K / Strg-Y herausgefunden. Weiß jemand, wie man darauf zugreift, oder wo wird der ausgeschnittene Text tatsächlich gespeichert?
Sancho Pancho
@SanchoPancho Abhängig von Ihrem csh implementiert es einen internen Kill-Ring, der den geschnittenen Text beibehält und ihn mit den Yank- und Yank-Pop-Bindungen zurückgibt. Ich glaube nicht, dass Sie einen anderen Zugang zu diesem Ring haben. siehe Mann csh .
Meuh