Um klar zu sein, möchten Sie keine "schnelle Möglichkeit, den Cursor auf einer Terminal- Befehlszeile zu bewegen ". Was Sie eigentlich wollen, ist eine schnelle Möglichkeit, über die Befehlszeile in Ihrem Shell- Programm zu navigieren .
Bash ist zum Beispiel eine sehr verbreitete Shell. Es verwendet die Readline- Bibliothek, um die Befehlszeileneingabe zu implementieren. Und sozusagen ist es sehr praktisch, Readline-Bindungen zu kennen, da sie nicht nur in Bash verwendet werden. Beispielsweise verwendet gdb auch Readline, um Eingaben zu verarbeiten.
In der Readline-Dokumentation finden Sie alle navigationsbezogenen Bindungen (und mehr):
http://www.gnu.org/software/bash/manual/bash.html#Readline-Interaction
Kurzes Kopieren und Einfügen, wenn der obige Link ausfällt:
Das Wesentliche
- Strg-b Ein Zeichen zurück verschieben.
- Strg-f Ein Zeichen vorwärts bewegen.
- [ENTF] oder [Rücktaste] Löschen Sie das Zeichen links vom Cursor.
- Strg-d Löscht das Zeichen unter dem Cursor.
- Strg-_ oder Cx Cu Machen Sie den letzten Bearbeitungsbefehl rückgängig. Sie können bis zu einer leeren Zeile rückgängig machen.
Bewegung
- Strg-a Zum Zeilenanfang gehen.
- Strg-e Zum Ende der Zeile gehen.
- Meta-f Bewegen Sie ein Wort vorwärts, wobei ein Wort aus Buchstaben und Ziffern besteht.
- Meta-b Ein Wort rückwärts bewegen.
- Strg-l Löschen Sie den Bildschirm und drucken Sie die aktuelle Zeile oben erneut.
Töte und ziehe
- Strg-k Tötet den Text von der aktuellen Cursorposition bis zum Ende der Zeile.
- Md Töte vom Cursor bis zum Ende des aktuellen Wortes oder, wenn zwischen den Wörtern, bis zum Ende des nächsten Wortes. Wortgrenzen sind die gleichen wie die von Mf verwendeten.
- M- [DEL] Tötet den Cursor vom Anfang des aktuellen Wortes oder, wenn zwischen den Wörtern, vom Anfang des vorherigen Wortes ab. Wortgrenzen sind die gleichen wie die von Mb verwendeten.
- Strg-w Töte vom Cursor zum vorherigen Leerzeichen. Dies unterscheidet sich von M-, da sich die Wortgrenzen unterscheiden.
- Strg-y Zieht den zuletzt getöteten Text zurück in den Puffer am Cursor.
- My Drehe den Kill-Ring und ziehe das neue Oberteil. Sie können dies nur tun, wenn der vorherige Befehl Cy oder My lautet.
M ist der Metaschlüssel. Für Max OS X Terminal können Sie dafür in den Einstellungen / Tastatur "Option als Metaschlüssel verwenden" aktivieren. Für Linux ist es komplizierter.
Aktualisieren
Beachten Sie auch, dass Readline in zwei Modi betrieben werden kann:
So schalten Sie Bash in den vi-Modus:
$ set -o vi
Persönlich bevorzuge ich den vi-Modus, da ich vim für die Textbearbeitung verwende.
Bonus
In der macOS Terminal App (und auch in iTerm) können Sie mit gedrückter Wahltaste den Cursor bewegen (der Cursor bewegt sich an die angeklickte Position). Das funktioniert sogar drinnen vim
.
Halten Sie die Wahltaste gedrückt und klicken Sie auf die Stelle, an der sich der Cursor bewegen soll. Terminal bewegt den Cursor genau an dieser Stelle.
quelle
Ich bevorzuge den vi-Bearbeitungsmodus (da diese Tastenanschläge jetzt in mein Rückenmark eingebettet sind (das Gehirn wird überhaupt nicht verwendet), zusammen mit STRG-K, STRG-X von WordStar 3.3 :-). Sie können die Befehlszeile verwenden
set -o vi
, um sie zu aktivieren (undset -o emacs
).In Vi wäre es (ESC-K, um zuerst die Aufstellung zu erhalten) "
f5;;B
" (ohne doppelte Anführungszeichen).Natürlich muss man verstehen, was auf dem Spiel steht, um damit durchzukommen. Im Grunde ist es
Mal sehen, ob die Emacs-Liebhaber eine bessere Lösung finden können, weniger als 5 Tastenanschläge (obwohl ich keinen Religionskrieg beginnen möchte).
Haben Sie darüber nachgedacht, ob Sie diesen schrecklich langen Befehl vielleicht in ein Skript einfügen möchten? :-)
Eigentlich kann ich eins besser machen als das: "
3f5B
", um das dritte Vorkommen von "5" zu finden, dann zurück zum Wortanfang.quelle
Verwenden Sie Meta-b / Meta-f, um sich jeweils um ein Wort vorwärts / rückwärts zu bewegen.
In OSX übersetzt Meta als ESC, was scheiße ist.
Alternativ können Sie auch die Terminaleinstellungen -> Einstellungen -> Profil -> Tastatur öffnen und "Option als Metataste verwenden" aktivieren.
quelle
Führen Sie den Befehl aus, nachdem Sie ihn einmal ausgeführt haben
fc
Es wird
$EDITOR
mit dem vorherigen Befehl gestartet. Anschließend können Sie den Befehl mit Ihrem regulären Editor ändern. Wenn Sie speichern und beenden, wird die Datei ausgeführt...aber wie Pax sagte - die Befehlszeile ist nicht besonders gut zum Bearbeiten von absurd langen Zeilen - warum nicht den Befehl in ein Skript verwandeln?
quelle
Wenn Sie eine bestimmte Anzahl von Wörtern vorwärts bewegen möchten, drücken Sie
M-<n>
(M-
für Meta und normalerweise die Escape-Taste) und dann eine Zahl. Dies sendet ein Wiederholungsargument an readline, sodass Sie jeden gewünschten Befehl wiederholen können. Wenn Sie vorwärts gehen möchten, drücken SieM-<n> M-f
und der Cursor bewegt die<n>
Anzahl der Wörter vorwärts .Z.B
Für Ihr Beispiel vom Cursor am Anfang der Zeile, die Sie treffen würden,
M-26 M-f
und Ihr Cursor würde sich am--option25|
Ende der Zeile auf -oder- befinden, auf denM-26 M-b
Sie den Cursor setzen würden--|option25
quelle
Inkrementelle Verlaufssuche
Geben Sie im Terminal Folgendes ein:
dann kopieren, einfügen und speichern
Alles, was Sie tun müssen, um einen vorherigen Befehl zu finden, ist die Eingabe der ersten 2 oder 3 Buchstaben. Der Aufwärtspfeil bringt Sie schnell dorthin und sagt, ich möchte:
Alles was ich tun muss ist einzutreten
und drücken Sie den Pfeil nach oben. Der Befehl wird bald angezeigt
quelle
Eine Option ist die Verwendung
M-x shell
inemacs
. Damit stehen alle Bearbeitungsmöglichkeiten und Tastenanschläge zur Verfügung,emacs
mitC-s
denen beispielsweise der Text durchsucht werden kannoption25
.(Aber ich würde es trotzdem vorziehen, stattdessen in der realen Terminal-Shell zu sein, wenn mich jemand auf gute Such- und Bearbeitungsmöglichkeiten hinweisen kann.)
quelle
Benütze die Maus
Manchmal ist es am einfachsten, eine Befehlszeile mit einer Maus zu bearbeiten. Einige frühere Antworten geben einen Befehl zum Öffnen Ihrer aktuellen Zeile in Ihrem $ EDITOR. Für mich (zhs mit grml config) ist diese Kombination
Alt+e
. Wenn Sie die Maus in Ihrem Editor aktivieren, können Sie sie verwenden.Um die Maus in Vim zu aktivieren, fügen Sie diese zu Ihrem ~ / .vimrc hinzu
Wenn Sie dann eine Textauswahl im Terminal vornehmen möchten (anstatt den Mausklick an vim zu übergeben), halten Sie die Umschalttaste gedrückt, wenn Sie auf klicken. Dies ist natürlich terminalspezifisch.
Sysadmins sollten keine Angst vor der Maus haben.
quelle
In Cygwin können Sie diese Funktion aktivieren, indem Sie mit der rechten Maustaste auf das Fenster klicken. Wählen Sie im Popup-Fenster Optionen ... -> Maus -> Aktivieren Klicken Sie auf Befehlszeilencursor platzieren -> Übernehmen.
Von nun an wird der Cursor durch einfaches Klicken mit der linken Maustaste an einer beliebigen Stelle in der Befehlszeile dort platziert.
quelle
Erstens: export EDITOR = 'nano -m'
dann: STRG + X STRG + E nacheinander.
Ihre aktuelle Zeile wird im Nano-Editor mit aktivierter Maus geöffnet. Sie können in einen beliebigen Teil des Textes klicken und ihn bearbeiten
dann STRG + X zum Beenden und y zum Bestätigen des Speicherns.
quelle
Ich habe ein Skript erstellt, um den Befehlszeilencursor per Mausklick zu bewegen :
Es kann auf Github gefunden werden
Weitere Infos zu einem anderen Beitrag
Funktioniert, wenn
echo -e "\e[?1000;1006;1015h" # Enable tracking
beim Klicken mit der Maus Escape-Sequenzen auf dem Terminal gedruckt werdenquelle
Es ist vielleicht nicht das schnellste, aber dies muss hier sein, um etwas über ANSI-Cursorbewegungen zu lesen
Mit ANSI-Escape-Sequenzen können Sie den Cursor nach Belieben über den Bildschirm bewegen. Dies ist nützlicher für Vollbild- Benutzeroberflächen, die von Shell-Skripten generiert werden, kann aber auch in Eingabeaufforderungen verwendet werden . Die Bewegungsfluchtsequenzen sind wie folgt:
(...)
Versuchen Sie, an der Eingabeaufforderung die folgende Codezeile einzugeben (es ist etwas klarer, was zu tun ist, wenn sich die Eingabeaufforderung beim Einfügen mehrere Zeilen weiter unten im Terminal befindet):
echo -en "\033[7A\033[1;35m BASH \033[7B\033[6D"
Dies sollte den Cursor sieben Zeilen nach oben bewegen und das Wort "BASH" drucken ", und kehren Sie dann dorthin zurück, wo eine normale Eingabeaufforderung erstellt wurde.Beispiele :
Bewegen Sie den Cursor 7 Zeilen zurück:
Bewegen Sie den Cursor auf Zeile 10, Spalte 5:
Geben Sie schnell Farbcodes wieder , um ein Programm einzufärben:
quelle