Qual è la sequenza di escape ANSI del terminale gnome per "CTRL + freccia / e"?


10

Sto cercando di configurare il mio bash ~/.inputrca queste impostazioni
(Nota: , significare i tasti freccia sinistra e destra)

  • Ctrl+ - dovrebbe tornare indietro di una parola
  • Ctrl+ - dovrebbe saltare in avanti di una parola

Attualmente ho questo nel mio ~/.inputrce non funziona. Ctrl + arrownon produce nulla.

"\eC-5C":forward-word
"\eC-5D":backward-word

Sono sicuro che la mia sequenza di escape è sbagliata.
Quali sono le sequenze di escape corrette per le Ctrl + arrowcombinazioni?

  • terminale: tmux all'interno di gnome-terminal

Risposte:


14

Gnome-terminal (più propriamente VTE ) imita alcune versioni delle sequenze di escape di xterm. Quanto da vicino lo fa, dipende dalla versione di VTE.

La documentazione relativa a xterm si trova nella sezione Tasti funzione stile PC delle sequenze di controllo XTerm .

Quello che stai cercando è una stringa simile \e[1;5D(per il controllo della freccia sinistra), dove 5indica il controlmodificatore.

In ncurses, è possibile vedere queste stringhe utilizzando infocmp -x, come i valori di kUP5, kDN5, kLFT5e kRIT5. Per esempio:

    kDN5=\E[1;5B,
    kLFT5=\E[1;5D,
    kRIT5=\E[1;5C,        
    kUP5=\E[1;5A,

grazie per la risposta e il collegamento alle risorse. Questo ha risolto il problema per me!
the_velour_fog

16

Il modo più semplice per trovare quali sono i codici di una sequenza di tasti è usare ctrl- v.

Quindi, si digita ctrl Ve ctrl per ottenere:

^[[1;5C

Quale è un modo di scrivere ESC[1;5Co \e[1;5C.


Wow Fico. sai se questa è una funzionalità prevista di gnome-terminal o è stata scoperta per caso?
the_velour_fog

Sia zsh ( bindkey|grep 'quoted-insert') che bash ( bind -p|grep 'quoted-insert') hanno un'associazione chiave per produrre i codici chiave impostati su <c-v>.
Kba sta con Monica il

1
Per quello che vale, Ctrl-V svolge la stessa funzione nelle modalità Inserisci e Comando di Vim.
Joeytwiddle,

4
@the_velour_fog Ctrl + V che significa "inserisci il carattere successivo invece di interpretarlo come un comando terminale" risale ai primi giorni di Unix. E 'una caratteristica di elaborazione riga di comando del kernel che è stato imitato da sistemi di input più sofisticati come bash, zsh, VI, ...
Gilles 'SO-tappa è male'

1
@kba Per la cronaca, non sono i soli. Bash's è in realtà fornito dalla libreria GNU Readline da cui dipende, che lo lega anche <c-q>per abbinare il keybind di Emacs che sta copiando. Zsh lo lega anche a entrambi <c-v>e, <c-q>ma solo se abiliti la modalità Vim, ironicamente. Readline è anche usato da altre cose come il import rlcompleterpotenziamento di Python . (Fonti: tiswww.case.edu/php/chet/readline/readline.html#SEC9 e man zshzle)
ssokolow,
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.