Come posso fare in modo che i tasti freccia Ctrl spostino avanti / indietro di una parola alla volta in Cygwin bash?


97

Nell'installazione predefinita di Cygwin, l'uso di CTRL-LEFTARROW o CTRL-RIGHTARROW stampa semplicemente 5C o 5D invece di saltare una parola alla volta come previsto.

I tasti Home / Fine funzionano correttamente, quindi dovrebbe essere possibile rimappare.


Questa domanda è rivolta a Cygwin, ma può avere un'applicazione generale su sistemi Unix / Linux. Se stai usando PuTTY e scopri che le soluzioni qui non funzionano per te, dai un'occhiata a una domanda specifica su quali codici usare per PuTTY .
Palswim,

Questo è successo anche a me sotto un completo Linux; su alcuni consigli online, ho aggiunto un ~/.inputrcfile - che ha annullato tutte le impostazioni predefinite di Linux. Puoi recuperarli aggiungendo $include /etc/inputrcnella parte superiore del tuo ~ / .inputrc (supponendo che / etc / inputrc sia il tuo inputrc a livello di sistema, che è su Linux Mint)
user208769

Risposte:


134

Ho trovato una soluzione , pubblicandola qui per i posteri.

Aggiungi le seguenti righe a ~/.inputrc( C:\cygwin\home\<username>\.inputrc):

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

Al termine, è possibile premere C-x C-rper rileggere il .inputrcfile per la sessione corrente.

Cose da notare se si desidera altre personalizzazioni simili: utilizzare 5Ae 5Bper le frecce su e giù e 2xper le versioni spostate.

I mapping dei tasti "ufficiali" sono descritti nel Manuale di riferimento di Bash , ma per un modo rapido per trovare un mapping dei tasti, in bash:

  1. digitare Ctrl+V
  2. digita la sequenza di tasti che ti interessa (ad es. Alt+ ). Questo verrebbe stampato^[[1;3C
  3. rimuovere il piombo ^[e sostituirlo con \eper creare\e[1;3C
  4. inserisci questo valore nel tuo .inputrcfile.

Alcuni codici tastiera non vengono visualizzati affatto come <kbd> Maiusc </kbd> + <kbd> Invio </kbd>. Come posso trovare questi codici tastiera tramite Mintty / Windows / Cygwin?
CMCDragonkai,

14

Puoi ricaricare il file .inputrc tramite:

bind -f ~/.inputrc

fonte


2
Questo è utile, ma in realtà non è una risposta alla domanda - forse sarebbe meglio come un commento ad un'altra risposta?
Martin Thompson,

Aggiunto alla risposta di @ Tom sopra
dovetalk

7

Nel caso in cui desideri qualcosa che funzioni senza impostazioni di ambiente personalizzate, ad esempio quando lavori su un account condiviso su un server o semplicemente per limitare la quantità di configurazione personalizzata utilizzata, Bash ha integrato per questo che funzionano in Cygwin.

Vale a dire Alt+ fper spostarsi in avanti e Alt+ bper spostarsi indietro.

http://www.gnu.org/software/bash/manual/html_node/Commands-For-Moving.html


4
Grazie, anche se sono a conoscenza di quei tasti e li uso. Uso anche i tasti freccia quando è conveniente e non voglio che emettano codici di escape invece di fare la cosa sana e spostare il cursore.
Tom

0

Quando ho usato rxvt con cygwin ho trovato che la soluzione a questo link funzionava per me: control_arrow_keys_in_rxvt .

Aggiungi le seguenti righe a ~/.inputrc:

"\eOd": backward-word
"\eOc": forward-word

Questo è quando un livello aggiuntivo sta cambiando le chiavi trasmesse (ma non risponde alla domanda posta).
Nikana Reklawyks,

0

Questa soluzione funziona anche in msys2console:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

Inserisci queste combinazioni di tasti nel .inputrcfile.

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.