Control-Backspace (unix-kill-rubout) para readline?

6

Em readline(3) eu deveria ser capaz de mapear Control-Backspace para a mesma função que Control-W (unix-kill-rubout). Independentemente do que eu coloquei em ~/.inputrc , não consigo que isso seja reconhecido.

\C-\b: unix-kill-rubout

... por exemplo, não funciona. Posso mapear Control-Backspace para o unix-kill-rubout em readline?

    
por Jé Queue 14.01.2010 / 05:26

7 respostas

4

Adicionando

"\C-_": unix-word-rubout

para .inputrc parece funcionar para mim.

O C-_ representa o sublinhado de controle. Isso é o que meu terminal envia quando pressiona Ctrl + Backspace .

Pressionando Ctrl + V , uma combinação de teclas fará o eco do seu código para o console. Para mim, pressionando Ctrl + V então Ctrl + Backspace ecoa ^_ com ^ significando Ctrl. Em .inputrc \C- é o modificador Ctrl, então \C-_ é o que é necessário aqui. Você pode usar essa técnica para determinar outras combinações de teclas que você pode usar.

    
por 22.07.2013 / 12:00
3

Como graywh indica backspace é geralmente representado por ^? . Para ligar a ctrl + bksp no seu arquivo .inputrc , você pode precisar modificar sua biblioteca readline. Este tutorial do ubuntu inclui um novo arquivo .keytab , que pode sobrepor a saída padrão.

No meu sistema, deixe-me adicionar "\e[9;3~": backward-kill-word ao meu .inputrc .

Como o comportamento readline parece variar um pouco baseado no seu sistema, vale a pena notar que estou usando o Konsole no Kubuntu.

    
por 26.06.2014 / 09:15
2

Eu duvido que seu terminal envie um código especial para o ctrl-backspace. Backspace é normalmente ctrl- ?, e você não pode adicionar outro modificador ctrl a um caractere ctrl.

Uma alternativa é permitir que o seu terminal envie uma sequência de escape especial para o Ctrl-Backspace e, em seguida, mapeie isso na configuração readline.

    
por 22.02.2010 / 23:25
1

Para o terminal linux, você pode fazer isso modificando o mapa de teclas que você carrega na inicialização. No meu padrão, o ubuntu carrega /etc/console-setup/cached.kmap.gz . Se você encontrar a entrada correspondente ao Ctrl-Backspace (provavelmente Control-Delete já está listado como Backspace), você poderá alterá-la para Control_w . Não tenho certeza sobre emuladores de terminal, mas o konsole (o emulador de terminal padrão do KDE) tem configurações muito boas para keybinds. Espero que ajude:)

Chris

    
por 14.09.2010 / 02:56
1

Isso funciona para mim (em urxvt, bash):

"\b":backward-kill-word
    
por 13.02.2011 / 11:15
0

Para usuários de Mac que fazem login em vários sistemas Linux:

Se você não tem acesso ao .inputrc ou a qualquer outro arquivo de configuração no sistema que está acessando e quer que as coisas funcionem universalmente, não importa em qual sistema você esteja logando, aqui está uma solução GUI usando o Iterm2.

Eu instalei o Iterm2 no meu mac a partir da linha de comando do meu mac usando brew ( link )

brew cask install iterm2

Como ligar uma sequência de teclas à chave de controle em Iterm2

  1. Faça o download gratuito do aplicativo "Key Codes" da loja de aplicativos. Instale-o no link abaixo e abra-o.

  2. Pressione a tecla Ctrl + alguma tecla nesse caso, eu usarei Ctrl + w .

  3. Ocódigohexadecimalnoquadradovermelhoéocódigoquequeremosenviarparaoterminal

  4. AgoramapeiesuasequênciadeteclasemIterm2abrindo-anapastaAplicativos->Preferências->Chaves->+.

  • Isso agora mapeará opt + ← delete para Ctrl + w no terminal, mas você pode usá-lo para mapear qualquer tecla para outra. Eu sei que o Ctrl + w é um mau exemplo para o Emacs, uma vez que não suporta Ctrl + w mas pode usar essa metodologia para atalhos compatíveis com o Emacs.
  • por 07.03.2018 / 23:45