Wie weisen Sie Tasten im Terminal Befehle zu?


10

Gibt es eine Lösung, um Wörtern im Terminalgebrauch spezielle Tastenkombinationen zuzuweisen? Zum Beispiel ist der Befehl less sehr nützlich und ich benutze ia lot, um die Ausgabe eines anderen Prozesses durch ihn zu leiten.

Die Idee wäre, spezielle Tastenkombinationen einzurichten, die nur im Terminalgebrauch aktiv sind und zum Schreiben verschiedener Befehle zugewiesen sind. Das Drücken von Ctrl+ Lim Terminalfenster könnte also schreiben

| less

oder Ctrl+ Gkönnte stehen für

| grep

Hinweis: Ich meine nur das Hinzufügen der Buchstaben zur Befehlszeile, nicht das endgültige Ausführen. Ähnlich verhält es sich mit Tab-Vervollständigung, aber spezifischer.

Antworten:


10

Ja, Sie können den Befehl bind verwenden

bind '"\ey"':"\"less \C-m\""

Dadurch wird Alt-e dem Befehl less zugeordnet und ausgeführt (mit \ Cm aka Ctrl-m).

Wahrscheinlich für die | du musst ihm entkommen.

bind '"\ey"':"\"\|less \C-m\""

Wenn Sie es nur an die Befehlszeile anhängen möchten, entfernen Sie das * \ Cm \ ""

Seien Sie vorsichtig, da bereits einige Bindungen definiert sind:

Ctrl + A    Go to the beginning of the line you are currently typing on
Ctrl + E    Go to the end of the line you are currently typing on
Ctrl + L                Clears the Screen, similar to the clear command
Ctrl + U    Clears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + H    Same as backspace
Ctrl + R    Let’s you search through previously used commands
Ctrl + C    Kill whatever you are running
Ctrl + D    Exit the current shell
Ctrl + Z    Puts whatever you are running into a suspended background process. fg restores it.
Ctrl + W    Delete the word before the cursor
Ctrl + K    Clear the line after the cursor
Ctrl + T    Swap the last two characters before the cursor
Esc + T     Swap the last two words before the cursor
Alt + F     Move cursor forward one word on the current line
Alt + B     Move cursor backward one word on the current line
Tab     Auto-complete files and folder names

Wie Sie oben sehen können, wird die Steuertaste mit Cm erstellt, sodass Sie den Befehl less mit Strg-g wie folgt starten können:

bind '"\ Cg"': "\" \ | less * \ Cm \ ""

Um die Schlüsselcodes für Alt (nur für ALT) abzurufen, können Sie den Befehl read aus der Shell verwenden:

@~$ read
^[y

^ [y ist gleich \ ey

Für weitere Informationen wurde diese Frage auch im Stackoverflow beantwortet:

/programming/4119991/bash-call-script-with-customized-keyboard-shortcuts


danke, wie kann ich eine Bindung löschen oder alle Bindungen anzeigen?
NES

Mit Ihren ersten beiden Beispielen stimmt etwas nicht. Es druckt immer auch den Platzhalter nach weniger, nachdem ich Ihre Bindungssyntax zugewiesen habe.
NES

bind -p und bind -P zeigen Ihnen alle Bindungen. Ich habe einen Fehler mit dem Stern gemacht ... Ich aktualisiere die Antwort
tmow

Vielen Dank. Vielleicht haben Sie eine Idee, wie Sie das gleiche Ziel bei Fischen erreichen können? Ich bekomme es so weit zum Laufen, aber das Problem ist, dass Fisch den Befehl automatisch auszuführen scheint, anstatt nur die Zeichenfolge standardmäßig zur Befehlszeile hinzuzufügen. hier ist die manpage linux.die.net/man/1/bind Leider ist das Beispiel dort für meinen Fall nicht sehr hilfreich.
NES

Dies ist bereits eine eingebaute Funktion. Ich denke, fishshell.com/user_doc/index.html#editor verklagt die Alt-p-Verknüpfung
tmow
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.