Alt-esquerda para pular palavras não funciona em emuladores de terminal

17

Em uma máquina Debian Wheezy no trabalho anterior, eu me acostumei a Alt + Left e Alt + Right para pular as palavras na linha de comando ativa (no bash).

No entanto, como em casa eu atualizei para Jessie (Debian 8.0, branch de teste) isso não funciona mais: em vez de pular para a palavra anterior, Alt-Left imprime algo como D ou [D . OTOH, se eu abrir o ssh e conectar ao meu Debian Headless Wheezy, ele funciona perfeitamente.

Além disso, acabei de instalar o Fedora 20 no meu novo trabalho e aqui o comportamento é o mesmo. Isso se aplica a bash, csh e ksh (iniciado em env -i ), assim como rxvt-unicode e xfce4-terminal, então deve ser algo fora desses níveis.

Onde mais na pilha devo procurar a diferença?

    
por Alois Mahdal 06.01.2014 / 19:23

2 respostas

9

Terdon me colocou na direção certa: arquivo inputrc .

O culpado é que, de forma não intuitiva, readline6 na verdade usa ~ / .inputrc em vez de / etc / inputrc, que readline (3) não enfatiza nem refuta:

The name of this file is taken from the value of the INPUTRC environment variable. If that variable is unset, the default is ~/.inputrc. If that file does not exist or cannot be read, the ultimate default is /etc/inputrc.

Portanto, enquanto em ambas as máquinas Debian / etc / inputrc é idêntico ao fornecido por libreadline6 package (a versão também é a mesma), na máquina mais recente ~ / .inputrc existe com uma única linha: set bell-style none . Quando este arquivo é deletado, tudo funciona bem (veja notas abaixo).

Eu não posso verificar o Fedora até amanhã, mas acho que é o mesmo problema. Update: No Fedora, ~ / .inputrc não existia, aqui o / etc / inputrc é simplesmente diferente, por isso pode não definir isto. Como um hotfix eu simplesmente salvei o inputrc do Debian como meu ~ / .inputrc.

Notas:

O mistério de como ele foi modificado durante a atualização 7 > 8 continua sem solução, mas em parte pode ser explicado pela minha memória ruim e por alguns malabarismos não-intencionais dos dotfiles. (BTW foi não foi atualização APT, mas sim reinstalar e dotfile manual em movimento, então talvez o ~ .inputrc ficou no caminho de alguma forma.)

Além disso, quando digo OK, quero dizer que funciona com Ctrl em todos os lugares, exceto Rxvt (OK, só verifiquei xfce4-terminal, mas sabemos que Rxvt é o rebelde de sempre), onde isso é remapeado para Alt, aparentemente porque Ctrl é tomado pela funcionalidade específica do Rxvt - mova a guia ativa na lista.

Como menções de manpage, com o bash você pode usar bind incorporado comando para investigar o que você tem atualmente.

    
por 06.01.2014 / 23:10
22

Você provavelmente tinha um arquivo local ~/.inputrc ou global /etc/inputrc definido que foi perdido na atualização. Uma solução fácil é criar um arquivo ~/.inputrc com as seguintes linhas:

## enable Alt-arrows 
"\e[1;3D": backward-word ### Alt left
"\e[1;3C": forward-word ### Alt right

Eles funcionarão com xterm e terminator e gnome-terminal , mas talvez precisem ser ajustados para outros terminais. Infelizmente, cada emulador de terminal pode usar uma sintaxe diferente. Para mais detalhes, veja minha resposta aqui .

    
por 06.01.2014 / 20:12