Como adiciono uma expressão regular a um comando de mapeamento no vim?

1

Eu quero mapear :b<buffer_number><cr> para <leader>b<buffer_number> . Eu tenho:

nmap <leader>b :b

o que não é suficiente, porque ainda tenho que pressionar Enter . Eu também tentei:

nmap <leader>b :execute 'b' (v:count) <cr>
    
por systemovich 26.09.2014 / 20:37

2 respostas

2

Para usar o [count] , você pode definir:

nnoremap <leader>b :<C-u>execute 'b' v:count<cr>

Com isso, você precisa prefixar a contagem, por exemplo, 4<Leader>b , que também é consistente com outros comandos do Vim. O <C-u> remove o intervalo adicionado automaticamente.

O problema com uma contagem final é determinar quantos dígitos consultar; Então, você precisa especificar todos os dígitos (por exemplo, 03 em vez de 3 ), consultar outra tecla para finalizar o mapeamento ou aguardar um tempo limite.

Aqui está um mapeamento simplista que consulta apenas um único dígito:

nnoremap <leader>b :execute 'b' nr2char(getchar())<cr>

(PS: Você deve usar :noremap ; ele torna o mapeamento imune ao remapeamento e recursão.)

    
por 26.09.2014 / 20:47
1

Já há [count]<C-^> (ou [count]<C-6> em alguns layouts de teclados):

2<C-^>
6<C-^>

e assim por diante ...

    
por 26.09.2014 / 21:49

Tags