Readline ti offre anche la possibilità di mappare le tue combinazioni di tasti personalizzate modificando il file di configurazione .inputrc nella tua home directory.
Di seguito sono riportati due tipi di combinazioni di tasti personalizzate che puoi definire:
- Macro
- Funzioni
Macro
È possibile definire una combinazione di tasti che, una volta eseguita, riempirà una stringa di caratteri nella posizione corrente del cursore. Per fare ciò aggiungi una riga con il seguente formato al tuo file di configurazione .inputrc (o crea il file se non esiste ancora):
<key combination>: "<string of characters>"
Ad esempio, supponiamo che mi ritrovi a reindirizzare ripetutamente l'output al file "~/debug_output.txt". Potrei definire una macro nel mio .inputrc aggiungendo la seguente riga:
Control-g: " > ~/debug_output.txt"
Ora, ogni volta che digito la combinazione di tasti Control-g, l'istruzione di reindirizzamento verrà aggiunta dopo il mio cursore, permettendomi di aggiungerla facilmente alla fine di altri comandi.
Tieni presente quanto segue quando crei le macro:
- Posso scrivere le combinazioni di tasti in inglese (per ulteriori informazioni su questo, vedere la pagina man di bash. Cerca la sezione "Readline Key Bindings")
- La sequenza di caratteri che deve essere inserita dalla macro deve essere racchiusa tra virgolette (")
- La scelta di Control-g è stata arbitraria, potresti scegliere una combinazione più significativa per te.
- È possibile ignorare le associazioni di tasti predefinite (tenerlo a mente quando ne definisci le tue)
- Affinché la combinazione di tasti abbia effetto, è necessario avviare una nuova istanza della shell (il file di configurazione .inputrc viene letto all'avvio della shell)
Funzioni
Puoi anche creare una combinazione di tasti che, una volta eseguita, chiamerà una funzione. Readline offre un gran numero di funzioni predefinite tra cui scegliere. Per mappare una combinazione di tasti su una funzione predefinita:
<key combination>: <function-name>
Per un elenco delle funzioni predefinite disponibili, vedere il manuale GNU Readline.
È anche possibile definire le proprie funzioni personalizzate, ma ciò richiede la loro scrittura in C ed è al di fuori dello scopo di questo tutorial. Potremmo trattarlo come tutorial separato in seguito.
Un'utile funzione predefinita è il menu completo. Fornisce un comportamento di completamento automatico alternativo.
Il comportamento predefinito per il completamento automatico (associato al tasto TAB) è:
- Compila il comando parziale/directory/nomefile se esiste una singola corrispondenza
- visualizza un elenco di possibili corrispondenze quando ne esiste più di 1
menu-complete invece scorrerà l'elenco delle possibili corrispondenze, riempiendo la successiva corrispondenza possibile ogni volta che viene chiamata la funzione. Questo comportamento può essere utile, specialmente quando si completano automaticamente nomi di file più lunghi. Per rimappare la chiave TAB per utilizzare questo comportamento, aggiungi la seguente riga al tuo file .inputrc.
TAB: menu-complete
Nota che questa nuova combinazione di tasti non avrà effetto nella shell corrente, devi avviare una nuova istanza per ricaricare il file di configurazione .inputrc
In questo tutorial abbiamo appreso che le associazioni di tasti della riga di comando di Linux sono alimentate da uno strumento chiamato Readline. Una combinazione di tasti può essere di 1 di 2 tipi:
- Macro:espande una sequenza di caratteri
- Funzione:esegue un'azione
Readline ci fornisce una serie di combinazioni di tasti predefinite, ma ci offre anche la flessibilità di crearne di nostre nel file di configurazione .inputrc. Infine, per vedere tutte le combinazioni di tasti correnti, possiamo usare il comando 'bind'.
bind -p