I'm trying to map some commands to a shortcut in vim. Specifically, I'm trying to get a colorized git diff. If I type this command in Ex mode, it works as expected:

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

But if I try to map it in my .vmirc,

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

I get the error:

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

I have other mapped commands using a pipe just fine, so it doesn't seem like that should cause a problem. If I call colordiff by its full path, it doesn't help, either. What gives?

link|improve this question
3  
You should take advantage of vimdiff mode as the plugins such as CVSmenu. Otherwise, have you tried \| instead ? – Luc Hermitte Jun 21 '10 at 15:29
D'oh! \| did it. I figured it was something stupid. I'll check out CVSmenu, but you should put your comment as an answer, so I can give you credit. :) – Alison R. Jun 21 '10 at 15:39
feedback

2 Answers

up vote 2 down vote accepted

(OK, here it is -- I wasn't sure about \|)

Try \| instead of |.

But you should instead have a look at the vimdiff mode, and how plugins like CVSmenu proceed. BTW, IIRC there already exists a (likely several) plugin that integrates git into vim.

link|improve this answer
feedback

To add to Luc's answer, this is because | is the command separator in vim, similar to ; in bash

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.