Auswählen von Text im Terminal ohne Verwendung der Maus

68

Ich möchte gerade die Eingabetaste drücken, um einen Befehl im Terminal auszuführen. Vorher möchte ich den Befehl jedoch ohne die Maus in die Zwischenablage kopieren.

Wie?

Wenn Sie sich an einem anderen Ort als dem Terminal befinden, erledigt Ctrl+ Homedies.

Gibt es eine Möglichkeit, Text wie diesen im Terminal willkürlich auszuwählen?

BEARBEITET:

  • davon ausgehen, dass die Verwendung anderer Programme wie screenkeine gute Alternative ist
  • Der Text muss außerhalb des Terminals eingefügt werden, sodass Ctrl+ yund ähnliche Sequenzen ihn ebenfalls nicht lösen
Strapakowsky
quelle
1
Du meinst Ctrl-Shift-Home?
Mechanische Schnecke
Shift-Home kopiert an den Zeilenanfang. Ctrl-Shift-Home kopiert an den Anfang der Seite.
Strapakowsky
Shift-Home und Ctrl-Shift-Home machen dasselbe für mich (springe zum Anfang des Terminals) und keiner von ihnen scheint etwas zu kopieren, das weder von Ctrl-Y noch von Ctrl-Shift-V (noch von Select) gepasst werden soll. Aber es funktioniert im Texteditor, nicht kopieren, nur auswählen. Verwenden von OpenSUSE Leap 15 in Virtual Box. Jede andere in den Antworten erwähnte Tastenbelegung funktioniert.
Brambor

Antworten:

16

Binde folgende Verknüpfung:

bind '"\C-p": "\C-e\C-u xsel <<"EOF"\n\C-y\nEOF\n\C-y"'

Nachdem Sie Crtl+ verwendet haben, wird PIhre Zeile in die Zwischenablage kopiert. Sie können es im Terminal einfügen mit:

xsel

Und in jede X-Anwendung mit der mittleren Maustaste oder Shift+ Insert.

Nykakin
quelle
Ich möchte vermeiden, die Maus zu benutzen. Ist es möglich, es mit Strg + Umschalt + V anstelle der mittleren Maustaste einzufügen?
MrGigu
@ MrGigu, dies verwendet eine andere Zwischenablage (siehe hier ). Sie müssen eine andere Verknüpfung verwenden. Standardmäßig sollte es Umschalt + Einfügen sein (siehe hier )
Nykakin
Oh, danke, Shift + Insert wird funktionieren! Ich wusste nicht, dass Sie mit diesem Befehl einfügen können.
MrGigu
Gibt es eine Erklärung, was hier eigentlich los ist?
Alexander
Oder verwenden Sie xsel -b, um die Standard-Zwischenablage zu verwenden, dh diejenige, die Strg + V / Strg + Umschalt + V verwendet. Erwähnenswert ist auch, dass diese Methode bei mehrzeiligen Befehlen fehlschlägt.
Wjandrea
27

Wenn Sie eine der Shells verwenden, die Emacs-Schlüssel (bash, csh usw.) versteht, können Sie den aktuellen Befehl folgendermaßen kopieren:

  1. control-A bringt Sie an den Anfang der Zeile.

  2. control-K tötet die gesamte Zeile, die Sie gerade eingegeben haben.

  3. control-Y reißt den Text zurück.

Später können control-YSie den Text zurückziehen, um ihn als Eingabe in den Shell-Befehlszeileneditor einzufügen.

Sehen Sie man bashund geben Sie dann, wenn es auftaucht, /emacsgefolgt von ein paar n(nächsten) ein, um Sie zum Abschnitt READLINE zu bringen.

ElderDelp
quelle
Ich wusste das, möchte aber außerhalb des Terminals einfügen. Bearbeitet zur Verdeutlichung.
Strapakowsky
3
control-Ukann den Befehl vom Ende direkt
schneiden
1
Der zweite Befehl hat mein Leben verändert.
Krishna
10

Das nächstgelegene, an das ich denken kann, ist Ctrl+ u, Ctrl+. y
Dies würde vom Cursor zum Zeilenanfang löschen und dann aus dem Readline-Puffer einfügen. Dies ist zwar nicht genau das Gleiche wie die Zwischenablage, aber Sie können sie in die Shell einfügen, wenn Sie dies benötigen.

zurückhaltend
quelle
Ich wusste das, möchte aber außerhalb des Terminals einfügen. Bearbeitet zur Verdeutlichung.
Strapakowsky
8

Es gibt ein Programm namens screen. Es wird ein Textfenstersystem erstellt, mit dem Sie zwischen mehreren Instanzen wechseln können. Sie können aber auch Text auswählen.

sudo apt-get install screen

Dieser Befehl installiert es.

Dann tippe screen

Mit ctr-a starten Sie die Befehlssequenz. Drücken Sie dann die Esc-Taste und der Cursor bewegt sich in eine beliebige Richtung. Drücken Sie die Eingabetaste, um die Textauswahl zu starten. Gehen Sie zum Endpunkt und drücken Sie erneut die Eingabetaste. Das wird in den Puffer kopiert.

Dann wird ctr-a und dann} eingefügt

Weitere Details zu anderen Befehlen finden Sie hier http://www.kuro5hin.org/story/2004/3/9/16838/14935

Meer Borg
quelle
Guter Vorschlag, aber ich mag es screenaus verschiedenen Gründen nicht, also gehe von einem normalen Ubuntu-Terminal aus. Bearbeitet meine Frage zur Klärung.
Strapakowsky
1
Dies sollte meiner Meinung nach als die richtige Antwort markiert werden.
Eddiewould
2

Wenn Sie sich in vim befinden, können Sie visuell eine oder mehrere Zeilen mit Shift+ auswählen vund dann eine Bindung verwenden, um z. B. yydie Auswahl an xclip zu leiten .

Fügen Sie die Bindung zu Ihrem vimrc hinzu:

vnoremap yy :w !xclip -selection clipboard<CR><CR>

Dazu muss xclip installiert sein, es befindet sich im Debian / Ubuntu Aptitude-Repository.

xclipspeichert stdin. Mit dieser -selection clipboardOption wird stdin auch in die Zwischenablage des Systems verschoben.

Sie können es also auch xclipgenerisch vom Terminal aus verwenden, um beispielsweise eine ganze Datei in die Zwischenablage des Systems zu kopieren:

cat myfile | xclip -selection clipboard

Wenn Sie optional auch einen Alias ​​erstellen können, z.

alias cb="xclip -selection clipboard" 
Kris
quelle