Ctrl-Arrow não funciona mais depois de instalar o Prezto

2

Eu tenho isso no meu .inputrc :

"\e[A": history-search-backward
"\e[B": history-search-forward
set show-all-if-ambiguous on
set completion-ignore-case on

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\eOc": forward-word
"\eOd": backward-word
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

Além disso, não toquei em nada em .zprezto/modules/editor/init.zsh , onde bindkey instruções estão definidas.

No entanto, quando pressiono Ctrl Esquerda ou Ctrl Direita meu terminal (URxvt) pisca e nada acontece . Por outro lado, no XTerm funciona. Parece ser um problema URxvt.

    
por rubik 07.02.2015 / 14:15

2 respostas

1

As ligações de teclas mostradas são para xterm (e programas que copiam o comportamento do xterm). urxvt é um descendente de rxvt , que usa ligações em diferentes . Por padrão, control à esquerda para o rxvt / urxvt envia escape O d . Você pode ver isso executando

cat -v

e digitando essa combinação de teclas. Ele irá ecoar como ^[Od . O mesmo problema se aplica às outras teclas do cursor.

urxvt fornece uma configuração de recurso keysym.sym (uma extensão de um recurso introduzido em rxvt ) que você poderia usar para modificar as chaves enviadas por esses terminais para corresponder mais de xterm . Isso seria uma configuração de recursos como esta:

URxvt.keysym.Control-0xff51:    3[1;5D

em que (conforme indicado na página de manual), Control é o modificador e 0xff51 é o código da tecla esquerda do cursor que você pode obter usando xev .

Para obter todas as chaves, você precisa adicionar um recurso para cada uma das chaves (e modificador).

Leitura adicional:

por 08.06.2016 / 02:51
5

O arquivo ~/.inputrc é uma coisa básica, não uma coisa zsh , tanto quanto eu sei. Ele controla o comportamento de readline , o equivalente zsh do qual é zle . Você pode modificar seu comportamento usando o comando bindkey .

Então, para obter Ctrl à esquerda e à direita , adicione essas linhas ao seu ~/.zshrc (pode haver um lugar melhor para eles, um equivalente a ~/.inputrc mas eu não sei e ~/.zshrc funciona):

bindkey "\eOc" forward-word
bindkey "\eOd" backward-word
bindkey "\e[1;5C" forward-word
bindkey "\e[1;5D" backward-word
bindkey "\e[5C" forward-word
bindkey "\e[5D" backward-word
bindkey "\e\e[C" forward-word
bindkey "\e\e[D" backward-word
    
por 07.02.2015 / 16:01