Como eu escrevo um comando no vim para executar vários comandos?

4

Eu escrevi alguns comandos que executam funções comuns colocando o seguinte em meus arquivos .vimrc :

command! FixWhitespace %s/ \+$//g
command! FixCommas %s/,\S\@=/, /g

Agora eu gostaria de criar um terceiro comando que execute ambos, mas o seguinte não funciona:

command! Fix FixWhitespace|FixCommas

Quando executo :Fix de vim , recebo a seguinte mensagem:

E488: Trailing characters: FixWhitespace|FixCommas

Não sei ao certo como essa mensagem de erro está relacionada ao que fiz, mas obviamente não estou fazendo algo certo!

Estou usando o Vim 7.4.

    
por quant 15.07.2014 / 05:56

1 resposta

7

Você precisa dizer ao vim usando command! -bar que um comando pode ser seguido por outro comando com o símbolo de pipe | :

command! -bar FixWhitespace %s/\s\+$//e
command! FixCommas %s/,\S\@=/, /ge

Agora está tudo bem:

command! Fix FixWhitespace|FixCommas

mas isso não é:

command! Fix FixCommas|FixWhitespace

Veja :h command-bar para mais detalhes.

A mensagem de erro E488: Trailing characters: FixWhitespace|FixCommas é a maneira do vim lhe dizer que não esperava nada seguindo o comando FixWhitespace . Veja :h E488 .

Como um aparte, o comando FixWhitespace não precisa do sinalizador g , pois o padrão pode corresponder no máximo uma vez em cada linha. Eu também definir o sinalizador e para suprimir a mensagem de erro irritante. Veja :h s_flags .

    
por 15.07.2014 / 07:12

Tags