O que é o buffer usado no mapeamento vim?

2

Do comando: help, na seção de mapeamento de chaves:

If the first argument to one of these commands is <buffer> the mapping will be effective in the current buffer only.

Eu não entendo essa definição. Todos os comandos não são aplicados ao buffer em que você está trabalhando? Ele também menciona que você poderia usar esse <buffer> para mapear a mesma combinação de teclas para diferentes comandos em diferentes buffers. Só por isso eu acho que você usaria se quisesse mapear algo enquanto trabalhava com um arquivo, então isso não afeta outros buffers? Estou confuso.

Para fornecer um exemplo concreto de onde estou vindo, o seguinte é um mapeamento para executar um script python com F9, que encontrei no Stack Overflow. Estou questionando qual é o uso de <buffer> , pois o mapeamento parecia funcionar bem sem ele:

autocmd FileType python nnoremap <buffer> <F9> :!clear;python %<cr>
    
por Dorsal6 23.06.2017 / 19:42

1 resposta

1

Isso significa que o mapeamento só existe no buffer onde foi definido. Se você mudar para outro buffer (arquivo), o mapeamento não funciona (existe) lá.

Um exemplo de por que isso é útil é para mapeamentos que são úteis apenas para tipos de arquivos específicos (neste exemplo, arquivos Python).

Normalmente, esses mapeamentos são definidos em um filetype plugin que é originado toda vez que um novo buffer desse tipo de arquivo é carregado.

    
por 23.06.2017 / 20:02