
Recentemente comecei a usar o Vim. Nos editores anteriores, estou acostumado a excluir uma palavra inteira pressionando Ctrl- Backspace. Depois de olhar a documentação, descobri que isso foi feito pressionando Ctrl- wno Vim. O problema é que depois de me acostumar a pressionar Ctrl- w, comecei a fechar abas e chats toda vez que escrevo uma palavra incorretamente (enquanto escrevia esta pergunta fechei esta aba 5 vezes). Então verifiquei como mapear chaves no Vim e tentei o seguinte:
:imap <C-BS> <C-w>
Infelizmente, não funcionou. Depois de um pouco de pesquisa, descobri que o terminal não faz distinção entre Ctrl- Backspacee Backspace. Vi alguns hacks e patches para corrigir esse problema, mas não consegui fazê-los funcionar no terminador (que é o emulador que desejo usar).
Existe alguma maneira de mapear Ctrl- Backspaceno Vim ao usar o terminador?
Responder1
Devido à maneira como a entrada do teclado é tratada internamente, infelizmente isso geralmente não é possível hoje. Algumas combinações de teclas, como Ctrl+ não alfabética, não podem ser mapeadas e Ctrl+ letra versus Ctrl+ Shift+ letra não podem ser distinguidas. (A menos que seu terminal envie um endereço distintotermcapcódigo para ele, o que a maioria não faz.) No modo de inserção ou de linha de comando, tente digitar a combinação de teclas. Se nada acontecer/for inserido, você não poderá usar essa combinação de teclas. Isso também se aplica a <Tab>
/ <C-I>
, <CR>
/ <C-M>
/ <Esc>
/ <C-[>
etc. (A única exceção é <BS>
/ <C-H>
.) Este é um ponto problemático conhecido e o assunto de várias discussões no vim_dev e no canal de IRC #vim.
Algumas pessoas (principalmente Paul LeoNerd Evans) querem consertar isso (mesmo para o console Vim em terminais que suportam isso) e apresentaram várias propostas, cp.http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8
Mas até hoje, nenhum patch ou voluntário foi apresentado, embora muitos tenham expressado o desejo de ter isso em uma futura versão principal do Vim 8.