gvim: Mapeia um comando que usa o nome do arquivo atual (%) no vimrc

0

No gVim no windows, eu quero mapear um comando no arquivo vimrc que usa o arquivo atual (%). Eu escrevo algo como:

map <F5> !mycommand %

Mas então, quando o gVim carrega pela primeira vez, ele roda o vimrc e diz que não pode encontrar o arquivo atual, porque ele ainda não está aberto. Como posso mapear isso no vimrc, mas fazê-lo analisar o comando% apenas quando eu apertar F5 (depois de abrir um arquivo)?

Obrigado.

    
por yoki 28.07.2013 / 13:44

1 resposta

2

Você poderia fazer

map <F5> !mycommand shellescape(expand('%'))<CR>

shellescape() faz o escapes todo o caractere especial na string (ex espaços)
expand() expande a string nesse caso o nome do arquivo atual.

No entanto, o mapa só deve ter sido analisado quando o mapa foi executado. Isso pode acontecer se você tiver um autocmd que executa <F5> ou Isso pode acontecer se você usou map em outro lugar e foi executado. Seria melhor usar as versões noremap do mapa, a menos que você queira mapeamentos recursivos.

    
por 28.07.2013 / 17:09

Tags