![Ctrl+TAB não está funcionando no vim com gnome-terminal](https://rvso.com/image/1416708/Ctrl%2BTAB%20n%C3%A3o%20est%C3%A1%20funcionando%20no%20vim%20com%20gnome-terminal.png)
Eu tenho um problema sério. Normalmente, o editor que uso é o vim, embora não consiga mapear a ação ctrl+tab. Quero mudar de aba com ctrl+tab (ctrl + shift + tab). No xterm, esse mapeamento está habilitado e a ação será utilizada. Mas, no gnome-terminal, a guia e a sequência de escape acabaram de aparecer. Por favor, diga-me como alternar guias no vim com o gnome-terminal.
Responder1
Devido à forma como a entrada do teclado é tratada internamente, infelizmente isso geralmente não é possível hoje, mesmo no GVIM. 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.
Responder2
O problema é que em um terminal o Tabcaractere é ^I
( Control- I). Isso significa que pressionar control enquanto pressiona tab não é algo que o terminal se preocupe em passar para o Vim. [1] Apenas envia um caractere de tabulação normal.
O GVim pode suportar isso porque não precisa depender do terminal para informar quais teclas estão sendo pressionadas em qual combinação - ele tem acesso mais direto aos eventos do teclado, portanto não tem problemas para ver teclas especiais modificadas.
Sugiro que você encontre uma chave diferente para mapear para ter consistência.
[1] Entendo que com emuladores de terminal "modernos" isso não é mais verdade, maseraverdade por tanto tempo que há um enorme obstáculo herdado a ser superado porque a biblioteca de terminal que o Vim usa (Ncurses) nem mesmo lida com esse evento, portanto, mesmo que o terminal possa suportá-lo tecnicamente, o Vim não pode porque a API da biblioteca é depende de não poder. Aproximadamente uma vez por ano, há uma discussão séria na lista de desenvolvedores do Vim sobre como corrigir esse problema por vários meios, incluindo a mudança para uma API mais capaz, mas nada acontece.
Responder3
A resposta mais próxima que tenho para isso é criar Leader+ Tabe Leader+ Shift+Tab
map <leader><Tab> :bnext<cr>
map <leader><S-Tab> :bprevious<cr>
Mapeei meu Leaderpara ,(vírgula), então estou digitando ,+Tab
No entanto, eles não funcionam muito bem. Você não pode manter Leaderpressionado e continuar pressionando Tabpara rolar pelas guias. Isso também não está no comportamento do MRU (usado mais recentemente).
Para esclarecimento, estou usando 'buffers' em vez de 'páginas de guia', pois acho que elas mapeiam muito melhor o conceito de para que outros editores usam as guias.
Em vez disso, você pode tentar o seguinte:
map <leader><Tab> :b<Space>
Isso abre o comando ex e então você pode pressionar Tabpara começar a rolar pelos buffers. Você também pode usar ←e →para ir e voltar.
Com essa abordagem, você também pode começar a digitar a parte de um buffer aberto e pressionar Tabpara percorrer a lista filtrada de buffers abertos.
Pessoalmente, apenas mapeio Leader+ Tabpara me fornecer o comportamento básico do MRU:
map <leader><Tab> :b#<cr>