O comando contém caracteres pipe - por que o vim está dizendo “não é um comando do editor”?

3

Estou tentando mapear alguns comandos para um atalho no vim. Especificamente, estou tentando obter um diff de git colorido. Se eu digitar este comando no modo Ex, ele funcionará como esperado:

:! git diff --staged % | colordiff | less -R

Mas se eu tentar mapeá-lo no meu .vmirc,

map ,gds :! git diff --staged % | colordiff | less -R<CR>

Eu recebo o erro:

E492: Not an editor command: colordiff | less -R<CR>

Eu tenho outros comandos mapeados usando um pipe muito bem, então não parece que isso deveria causar um problema. Se eu chamo o colordiff pelo seu caminho completo, isso também não ajuda. O que da?

    
por Alison R. 21.06.2010 / 17:24

2 respostas

9

(OK, aqui está - eu não tinha certeza sobre \| )

Experimente \| em vez de | .

Mas você deve dar uma olhada no modo vimdiff e em como os plugins como o CVSmenu continuam. BTW, IIRC já existe um plugin (provavelmente vários) que integra o git ao vim.

    
por 21.06.2010 / 18:00
6

Para adicionar a resposta de Luc, isso ocorre porque | é o separador de comando no vim, semelhante a ; no bash

    
por 21.06.2010 / 18:30

Tags