Obtendo ctrl + backspace para deletar palavras no modo gnome-terminal e vim insert

7

Parece que <ctrl> + W apaga uma palavra de cada vez. Isso é ótimo, mas eu realmente realmente funcionaria com <ctrl> + <backspace> como a maioria dos outros aplicativos.

Qual é a melhor maneira de fazer isso? Eu precisaria que a alteração afetasse os comandos do gnome-terminal, a linha de comando vim e a GUI vim.

    
por Costa 24.11.2015 / 06:19

2 respostas

4

Note que isto funcionará no terminal e no modo padrão emacs (que você está usando se Ctrl + W apaga a palavra anterior para voce). Ele não funcionará no modo vi do bash e não afetará o próprio vi / vim. Esta é, portanto, apenas uma resposta parcial, mas o melhor que esse usuário do emacs pode oferecer.

Esse tipo de coisa é gerenciado pela biblioteca readline cujo comportamento pode ser controlado via ~/.inputrc . Edite (ou crie, se não existir) ~/.inputrc e adicione esta linha:

"\C-?":"\C-W"

Agora, abra um novo terminal e ele deve funcionar.

Explicação

O \C-? é, na verdade, Controle + BackSpace . Você pode ver os códigos de teclas pressionando Ctrl + V e depois a tecla que você está procurando. Você verá que BackSpace retorna ^? .

Agora, deve ser possível ligar Control + BackSpace à função bash que apaga a palavra anterior ( backward-kill-word ou unix-word-rubout ) usando "\C-?": backward-kill-word . No entanto, não consigo fazer isso funcionar. Ele funciona perfeitamente com chaves diferentes ( "\C-E": backward-kill-word , por exemplo, faz Ctrl + E deletar a palavra anterior) mas por alguma razão, não consigo fazer isso trabalhe com o BackSpace .

Então, como uma solução, apenas mapeamos Ctrl + Backspace para Ctrl + W que já está mapeado para backward-kill-word . Então, quando você pressionar Ctrl + Backspace , isso será traduzido para Ctrl + W que, por sua vez, enviará backward-kill-word . Eu tenho a idéia para essa solução alternativa de esta postagem SU .

    
por terdon 24.11.2015 / 12:33
3

Até muito recentemente, o gnome-terminal emitia o mesmo código em Backspace e Ctrl + Backspace , portanto você não consegue distinguir os dois em sua aplicação.

Isso foi corrigido no vte-0,42, que é parte do Gnome 3.18 lançado neste outono.

Se você estiver usando o Wily, você pode encontrar pacotes atualizados em Gnome3 Staging .

    
por egmont 25.11.2015 / 08:54