VIM - Como pesquisar e substituir várias strings usando o líder?

2

Gostaria de criar um atalho líder para realizar várias pesquisas globais e substituí-lo no buffer atual.

Por exemplo, pressionando líder, em seguida, "fq", eu gostaria que ele pesquisasse e substituísse 3 vezes globalmente, substituindo:

  • "a" com "b"
  • "c" com "d"
  • "e" com "f"

Eu li a ajuda e acho que estou perto, mas isso não funciona (parece fazer apenas a primeira pesquisa):

map <leader>fq :%s/a/b/ge | %s/c/d/ge | %s/e/f/ge<CR>
    
por Brad Parks 05.04.2014 / 20:38

1 resposta

4

O separador de comando | tem uma precedência mais alta que os argumentos :map , então você está efetivamente executando isso:

:map <leader>fq :%s/a/b/ge
:%s/c/d/ge | %s/e/f/ge<CR>

Você precisa escapar o caractere | ou usar melhor a notação de chave especial <Bar> ao definir o mapeamento:

:map <leader>fq :%s/a/b/ge <Bar> %s/c/d/ge <Bar> %s/e/f/ge<CR>

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

    
por 05.04.2014 / 20:57

Tags