In a previous question I asked about outputting evaluated code to a new window in MacVim. I got a great solution, but it presented another question: How can I map a key command in my .vimrc that involves piping output in the shell?

As a simple example, let's say I wanted to pipe the results of ls -a to a new MacVim window. From the Vim command line I can enter !ls -a | mvim -, and the results will appear in a new window. Great! Now, I add that to my .vimrc:

 nmap <Leader>r :w !ls | mvim -<CR>

Vim now throws an error every time I try to source my .vimrc, which reads as follows:

E492: Not an editor command:  mvim -<CR>

Any ideas on how to overcome this?


Try putting this in your ~/.vimrc file:

nmap <Leader>r :w !ls <bar> mvim -<CR>


nmap <Leader>r :w !ls \| mvim -<CR>
  • awesome. i had tried escaping with \| to no avail. i didn't know you could use <bar>. thanks! – michaelmichael Apr 23 '10 at 23:57
  • 1
    I've been using vim for almost a decade. Ran into this today. Found an answer almost 10 years old. Amazing. Thanks from the future! – geoff Apr 5 at 14:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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