No vim, como posso remapear a guia sem também remapear Ctrl + i?

14

Eu gosto de usar a aba para pular entre janelas divididas, então eu tenho map <tab> <C-W><C-W> no meu .vimrc. No entanto, notei que isso faz com que Ctrl + I não se comporte mais como Ctrl + I, mas como Ctrl + W, Ctrl + W. Como posso remapear apenas <tab> , mas não <C-i> ?

    
por Jon 17.06.2014 / 20:45

2 respostas

10

Devido à forma como a entrada do teclado é tratada internamente, isso infelizmente não é geralmente possível hoje, mesmo no GVIM. Algumas combinações de teclas, como Ctrl + não-alfabético, não podem ser mapeadas e Ctrl + letra vs. Ctrl + Shift + letra não pode ser distinguida. (A menos que o seu terminal envie um código termcap 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. (somente a exceção é <BS> / <C-H> .) Esse é um ponto problemático conhecido e o assunto de várias discussões sobre vim_dev e o canal de IRC #vim.

Algumas pessoas (principalmente Paul LeoNerd Evans) querem consertar isso (mesmo para o console Vim em terminais que apóiam isso), e lançaram várias propostas, cp. link

Mas a partir de hoje, nenhum patch ou voluntário ainda se apresentou, embora muitos tenham expressado o desejo de ter isso em um futuro lançamento importante do Vim 8.

    
por 17.06.2014 / 21:00
0

Nem todos os atalhos são possíveis no Vim, especialmente se estiverem sob um terminal. Eu não recomendo usar um atalho de guia para essa finalidade. Mas uma solução alternativa pode ser a seguinte:

" Note: Allows faster switching between windows with "Ctrl+w"! By Questor
nnoremap <silent> <C-w> <C-w><C-w>
inoremap <silent> <C-w> <Esc><C-w><C-w>
vnoremap <silent> <C-w> <Esc><C-w><C-w>

Veja um exemplo de uso no link

[] 's

    
por 19.06.2014 / 17:02

Tags