mapear um comando com vim

1

Como posso mapear um comando no vim que faça algo como:

: comando (eu escrevo aqui e pressione enter) (Executa outro comando com as coisas que eu escrevi)

ou

:badd my_buffer_name
:b my_buffer_name

Eu quero mapear isso com "\ ff" e ele deve funcionar assim: \ ff my_buffer_name. Como posso mapear esses comandos?

    
por bliof 13.09.2011 / 09:56

1 resposta

2

Supondo que você queira que seu mapeamento execute um desses comandos de buffer, use isto:

:map \ff :badd 

Certifique-se de incluir um caractere de espaço após ": badd". Veja

:help 05.3
:help map.txt

Se você quis dizer que seu mapeamento deve executar ambos os comandos, use isto:

:command -nargs=1 BuffAdd badd <args> <bar> b <args>
:map \ff :BufFAdd 

Novamente, inclua um espaço após ": BufAdd" no mapeamento. Veja

:help 40.2
:help user-commands

Para tarefas mais complicadas ou manipulação de argumentos, você pode escrever uma função. Veja

:help 41.7
:help user-functions

Uma função que incluiu o uso da função input () pode permitir que você digite \ff seguido pelo nome do buffer sem ver :BufAdd na linha de comando, assim:

function MyFunc()
    let my_buffer_name = input("Buffer name: ")
    exe 'badd' my_buffer_name
    exe 'b' my_buffer_name
endfunction
map \ff :call MyFunc()<CR>
    
por 13.09.2011 / 18:35