Pergunta

Bash usa readline e readline pode apagar a palavra à direita do cursor com o "kill-palavra".

O problema está em reconhecer a pressão de tecla do controle-delete. Quando eu pressioná-los em bash, "5 ~" é a saída na tela. I pode apenas ligar para isso, mas isso significaria que um dia eu precisar digitar "5 ~", e exclui uma palavra para a direita em vez disso! Então, eu muito prefiro descobrir a seqüência de controle correto.

Eu pesquisei, e muito poucos recursos discutir a tecla "delete", mas nenhum que eu encontrei discutir tecla "controle-delete". Eu experimentei com muitas variações, mas nada funciona.

O pior é as horas que passei neste tedioso, moagem estúpido, quando ele realmente deve ser um não-problema.

EDIT: É através de X, então talvez haja uma solução com xev e xmodmap

Foi útil?

Solução

Na minha máquina, pressionando Ctrl-V, saídas Ctrl-Apagar esta:

^[[3;5~

O personagem ^[ de escape pode ser substituído por \ e, por isso, você pode então utilizar o bind como este para bash (em sua ~/.bashrc por exemplo):

bind '"\e[3;5~":kill-word'

Ou, você pode adicionar o seguinte ao seu ~/.inputrc tão Ctrl-Delete faz kill-palavra em qualquer programa que usa readline:

"\e[3;5~": kill-word

Isto irá ligar-se apenas a tecla Ctrl-Delete, você não precisa se preocupar com o que vai acontecer se você precisa digitar 5 ~.

Outras dicas

O que você vê não é toda a verdade. É provavelmente <ESC>5~ ou algo parecido. Tente Ctrl-V Ctrl-Delete. Os meios Ctrl-V "não interpretar a próxima coisa".

Assim <ESC>5~ ligação que deve ser bastante seguro.

Alt + D exclui uma palavra à direita do cursor Ctrl + W exclui uma palavra à esquerda do cursor (Ambos são baseados em Emacs, eu acredito)

Se você digitar ^ Q ^ V (que é Control-Q seguido por Control-V, liberando a tecla Control entre eles é muito bem), e, em seguida, pressione Control-Delete, você obter o resultado que você mencionou? Eu apenas tentei, e pelo menos usando Putty eu não obter uma resposta em tudo. Talvez o behvior é diferente em um console real Linux, no entanto.

Para outras chaves, impressões readline uma sequência mais longa, muitas vezes incluindo um caractere especial "introdução seqüência de comando", que é difícil de digitar por engano. Experimente e veja se você obter uma sequência mais longa com o ^ Q ^ comando V (que é, aliás, chamado quoted-insert).

Por exemplo, se eu imprensa ^ Q ^ V e depois excluir (sem controle pressionado), impressões readline ^[[3~. Isso me diz que eu posso ligar material para a tecla Delete dizendo \e[[3~. Parece highely provável que o personagem CSI está presente para você, mas você não está vendo isso desde que você não está pedindo readline para citar a entrada corretamente.

Ctrl-W excluirá palavras.

Ctrl-u exclui linhas.

Eles são baseados em Emacs (M-w e M-u).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top