vim: enviando uma chave de conclusão de tabulação contra um pressionamento de tecla mapeado

2

Para alternar entre buffers sem instalar nenhum plugin, uma boa maneira é digitar

:b <tab>

Que mostra todos os nomes de buffer atuais na barra de status e você pode escolher um usando as teclas de cursor e entrar.

Mas: b < tab > é de 5 teclas e gostaria de mapeá-lo para um < leader >.

Mas definir o seguinte não está funcionando.

:nnoremap <Leader>. :b <Tab>

Ele mostra ": b ^ I" na barra de status e não abre os nomes dos buffers na barra de status.

Alguém sabe por quê?

    
por CDR 05.07.2012 / 07:40

2 respostas

3

Você precisa definir a configuração wildcharm . Tente isto:

set wildcharm=<Tab>
nnoremap <leader>. :b <Tab>

Pelo menos isso funciona aqui.

    
por 06.07.2012 / 09:50
1

Acho que tem algo a ver com <tab> não sendo um argumento real para :b .

Se você soltar a guia, como em nnoremap <leader>. :b<space> , poderá acessar <tab> para acessar o menu.

Você está com três pressionamentos de teclas para chamar o menu, mas ainda pode ter que atingir <tab> mais vezes para selecionar o buffer correto e pressionar <CR> . Isso é um mínimo de 4 pressionamentos de tecla se você quiser o primeiro buffer que é muito bom, mas e se você quiser o 7º ou 12º buffer?

Posso sugerir outra maneira?

nnoremap <leader>. :ls<CR>:b<Space>

Com esse mapeamento, uma lista de buffers ( :ls ) é exibida e o comando :b é iniciado, aguardando um número de buffer como argumento. São 4 pressionamentos de teclas ( ,.5<CR> ), qualquer buffer que você queira pular (bem, se você tiver 10 ou mais buffers, isso seria 5 pressionamentos de teclas, mas você entendeu o ponto).

Eu não sei como você pode diminuir o tempo ao lado do mapeamento de uma única chave (como <F11> ou qualquer outra coisa).

    
por 05.07.2012 / 10:16

Tags