Mac – Mapping a Piped Shell Command in Vim

macshellvim

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?

Best Answer

Try putting this in your ~/.vimrc file:

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

or

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