BEARBEITEN April 2015: Wenn Sie die gleiche Frage haben, empfehle ich, auch http://xiki.org/ zu überprüfen.
Ich weiß, dass Terminals nicht so funktionieren, aber ich habe oft den Wunsch, dass es eine einfache Möglichkeit gibt, Text zu verwenden (kopieren, ändern usw.), der sich bereits in meinem Terminalfenster-Verlauf aus einer früheren Befehlsausgabe befindet.
Ich habe es mir so vorgestellt:
Ich bin gerade dabei, einen Befehl einzugeben, und mir ist klar, dass ich etwas eingeben muss, das bereits ein paar Zeilen darüber auf dem Bildschirm angezeigt wird. Ich kann nach der Maus greifen und sie auswählen, aber das hasse ich. Was ich mir im Moment wirklich wünsche, ist, dass mein gesamtes Terminal zu einem riesigen Vim-Puffer wird: die Eingabeaufforderungen, die von mir eingegebenen Befehle und die Ausgabe dieser Befehle. Alles. Und dann könnte ich ein paar Zeilen hochspringen, vielleicht ein wenig editieren und etwas Text ruckeln. Kehren Sie dann in den Bash-Shell-Modus zurück und fügen Sie alles, was ich gezerrt habe, in die aktuelle Befehlszeile ein.
Ich weiß, dass es einige Optionen gibt:
Pipe den Text, den ich brauche, direkt von der Ausgabe eines Befehls in eine Datei oder direkt zum nächsten Befehl. Dazu müssen Sie den Befehl jedoch im Voraus planen oder erneut aus dem Verlauf ausführen (vorausgesetzt, die Ausgabe ändert sich zwischen den Aufrufen nicht).
Um nach der Maus zu greifen und den zu kopierenden Text auszuwählen. Lahm, nervig, ich wünschte, ich müsste das nicht tun (das ist nicht die GUI-Stackexchange-Site, oder? =)
So verwenden Sie die Option "Text exportieren als ..." in meinem (Mac OS X) Terminal-Programm und speichern den Terminal-Text in einer Datei. Öffnen Sie dann die Datei und arbeiten Sie damit. Fast, aber warum den Schritt des Speicherns in eine Datei auf der Festplatte durchlaufen?
Die Frage ist also: Was machen Sie in dieser Situation? Gibt es einen Trick, ein Tool oder eine Shell-Funktion, die in diesem Szenario nützlich sein könnte? Geben Sie sich einfach damit ab, die Maus zu verwenden, oder tippen Sie neu, was Sie tippen müssen?
Es könnte sein, dass das Problem darin besteht, dass ich die Dinge nicht "auf die Unix-Art" mache, aber komm schon, das ist 2010 und ich kann nicht einfach Text ein paar Zeilen von meinem Cursor weg kopieren?
quelle
Antworten:
Sie könnten ein Skript verwenden (verwenden Sie -f, um sicherzustellen, dass es jedes Mal geleert wird), und Sie können die gesamte Ausgabe in einer Datei haben.
Verwenden Sie einen Terminal-Multiplexer (Screen, TMUX usw.). Zum Beispiel für den Bildschirm http://web.mit.edu/gnu/doc/html/screen_11.html#
Andere Terminal-Multiplexer haben sicherlich fortgeschrittenere Fähigkeiten.
quelle
In tmux (einem Terminal-Multiplexer) können Sie Strg + A- [drücken, um in den Vi-Puffermodus zu wechseln, in dem Sie auf dem Bildschirm navigieren, den Puffer vor- und zurückblättern, Text kopieren usw. Die Standardverknüpfung lautet tatsächlich Strg + B- [aber das sollte offensichtlich neu konfiguriert werden. Der voreingestellte Puffermodus ist Emacs, aber Sie können ihn als Vi konfigurieren.
Schauen Sie sich tmux an, es ist wirklich ein großartiger moderner Terminal-Multiplexer. Neben der Arbeit mit Buffer können Sie den Bildschirm in mehreren Fenstern teilen, von mehreren Terminals aus eine Verbindung zu derselben Sitzung herstellen usw. Für den ultimativen Komfort können Sie ihn sogar zu Ihrer Login-Shell machen, wenn Sie ihm mitteilen, um welche Shell es sich handelt.
Unter OpenBSD wurde tmux sogar zum Bestandteil des Basissystems gemacht.
Weitere Informationen finden Sie in der Manpage zu tmux. Siehe auch Screenshots auf http://tmux.sourceforge.net/
quelle
In Emacs verarbeitet die Mx-Shell die Ausgabe der vorherigen Ausgabe. Sie können ganz einfach kopieren, vorherige Befehlsausgaben einfügen oder einen beliebigen Teil Ihres Puffers wie einen normalen Puffer. Ich bin mir ziemlich sicher, dass es ein vim-Äquivalent geben sollte.
quelle
eshell
zugreifen .Wie hier erwähnt, könnte der Emacs
eshell
Ihr Standardbegriff + Shell sein. :) Dann würden Sie dort mindestens die üblichen Textnavigationstasten verwenden. Wenn Sie mehr Spezialschlüssel gelernt haben, können Sie auf die folgenden Funktionen von Emacseshell
zugreifen:quelle
Ich verwende urxvt (rxvt-unicode) und es gibt ein Paket namens urxvt-keyboard-select, das genau das sein kann, was Sie wollen, wenn Sie urxvt installieren können. Die Archlinux-Paketinformationen (die Zeiger enthalten) sind hier:
https://aur.archlinux.org/packages.php?ID=39950
Ursprüngliche Quelle: http://www.github.com/muennich/urxvt-perls
quelle
Versuchen Sie, vim als CLI zu verwenden? Wählen Sie einfach den Ausgang aus ein paar Zeilen und leiten Sie ihn durch:!.
quelle