Come si assegnano i comandi ai tasti nel Terminale?


10

Esiste una soluzione per assegnare combinazioni di tasti speciali alle parole nell'uso del terminale. Ad esempio il comando less è molto utile e io uso molto per convogliare l'output di un altro processo attraverso di esso.

L'idea sarebbe quella di impostare combinazioni di tasti speciali che sono attive solo nell'uso del terminale assegnato per scrivere comandi diversi? Quindi premendo Ctrl+ Lnella finestra del terminale si potrebbe scrivere

| less

o Ctrl+ Gpotrebbe rappresentare

| grep

Nota: intendo solo aggiungere le lettere alla riga di comando per non eseguire finalmente. Un modo simile per quanto riguarda il completamento delle tabulazioni, ma più specifico.

Risposte:


10

Sì, puoi usare il comando bind

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

Che mappa Alt-e con il comando less ed eseguilo (con \ Cm aka Ctrl-m)

Probabilmente per il | devi scappare.

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

Se vuoi semplicemente aggiungerlo alla riga di comando, rimuovi * \ Cm \ ""

Fai attenzione perché ci sono già alcuni collegamenti definiti:

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

Il tasto Control, come puoi vedere sopra, è fatto con Cm, quindi puoi iniziare il comando less con Ctrl-g, come segue:

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

Per ottenere i codici chiave per Alt (solo per ALT), è possibile utilizzare il comando read dalla shell:

@~$ read
^[y

^ [y è uguale a \ ey

Per maggiori informazioni, a questa domanda è stata data risposta anche in StackOverflow:

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


grazie, come posso eliminare un binding o mostrare tutti i binding?
NES,

c'è qualcosa che non va nei tuoi primi 2 esempi. stampa sempre anche il carattere jolly dopo meno dopo che ho assegnato con la sintassi di associazione.
NES,

bind -p e bind -P mostreranno tutti i binding. Ho fatto un errore con la stella ... Sto aggiornando la risposta
tra il

molte grazie. forse hai idea di come raggiungere lo stesso obiettivo nel pesce? ottengo che funzioni così lontano, ma il problema è che fish sembra eseguire automaticamente il comando invece di aggiungere semplicemente la stringa alla riga di comando per impostazione predefinita. ecco la manpage linux.die.net/man/1/bind Purtroppo l'esempio non è molto utile per il mio caso.
NES,

Questa è già una funzione integrata Penso che fishshell.com/user_doc/index.html#editor abbia citato in giudizio il collegamento Alt-p
tra il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.