Qual é a sequência de escape ANSI do terminal gnome para "CTRL + arrow / s"?

10

Eu estou tentando configurar minha festa ~/.inputrccom estas configurações
(Nota: , significa as teclas de seta esquerda e direita)

  • Ctrl+ - deve retornar uma palavra
  • Ctrl+ - deve avançar uma palavra

Atualmente eu tenho isso no meu ~/.inputrce não funciona. Ctrl + arrownão produz nada.

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

Tenho certeza que minha sequência de escape está errada.
Quais são as seqüências de escape corretas para as Ctrl + arrowcombinações?

  • terminal: tmux dentro do gnome-terminal
the_velour_fog
fonte

Respostas:

14

O Gnome-terminal (mais corretamente o VTE ) imita algumas versões das seqüências de escape do xterm. A proximidade com que isso depende da versão do VTE.

A documentação relevante do xterm está na seção Teclas de função no estilo PC das XTerm Control Sequences .

O que você está procurando é uma string como \e[1;5D(para controle da seta esquerda), onde 5denota o controlmodificador.

Em ncurses, você pode ver essas seqüências usando infocmp -x, como os valores para kUP5, kDN5, kLFT5e kRIT5. Por exemplo:

    kDN5=\E[1;5B,
    kLFT5=\E[1;5D,
    kRIT5=\E[1;5C,        
    kUP5=\E[1;5A,
Thomas Dickey
fonte
obrigado pela resposta e link para recursos. Isso resolveu o problema para mim!
the_velour_fog 14/02
16

A maneira mais simples de descobrir quais são os códigos de uma sequência de teclas é usar ctrl- v.

Então, você digita ctrl Ve ctrl obtém:

^[[1;5C

Qual é a maneira de escrever ESC[1;5Cou \e[1;5C.


fonte
Uau legal. você sabe se isso é um recurso pretendido do gnome-terminal, ou é algo que foi descoberto por acidente?
the_velour_fog
Zsh ( bindkey|grep 'quoted-insert') e bash ( bind -p|grep 'quoted-insert') possuem uma ligação de chave para gerar os códigos de chave definidos como <c-v>.
kba fica com Monica 14/02
1
Pelo que vale, Ctrl-V executa a mesma função nos modos Inserir e Comando do Vim.
Joeytwiddle 14/02
4
@the_velour_fog Ctrl + V, que significa “inserir o próximo caractere em vez de interpretá-lo como um comando de terminal”, remonta aos primeiros dias do Unix. É um recurso de processamento de linha de comando do kernel que foi imitado por sistemas de entrada mais sofisticados, como bash, zsh, vi, ...
Gilles 'SO parada sendo mal'
1
@kba Para o registro, eles não são os únicos. O Bash's é realmente fornecido pela biblioteca GNU Readline da qual depende, o que também o vincula <c-q>a corresponder ao keybind do Emacs que está copiando. Zsh também se liga-lo para ambos <c-v>e <c-q>, mas somente se você ativar o modo Vim, ironicamente. O Readline também é usado por outras coisas, como o import rlcompleteraprimoramento do Python . (Fontes: tiswww.case.edu/php/chet/readline/readline.html#SEC9 e man zshzle)
ssokolow