在 Vim 中映射管道 Shell 命令

mic*_*ael 12 mac vim shell

在上一个问题中,我询问了将评估代码输出到 MacVim 中的新窗口。我得到了一个很好的解决方案,但它提出了另一个问题:如何在我.vimrc的外壳中映射涉及管道输出的关键命令?

作为一个简单的例子,假设我想将结果通过管道ls -a传输到一个新的 MacVim 窗口。我可以从 Vim 命令行输入!ls -a | mvim -,结果将出现在新窗口中。伟大的!现在,我将其添加到我的.vimrc

 nmap <Leader>r :w !ls | mvim -<CR>
Run Code Online (Sandbox Code Playgroud)

现在,每次我尝试获取 my 的源时.vimrc,Vim 都会抛出一个错误,内容如下:

E492: Not an editor command:  mvim -<CR>
Run Code Online (Sandbox Code Playgroud)

关于如何克服这个问题的任何想法?

Den*_*son 17

尝试将其放入您的~/.vimrc文件中:

nmap <Leader>r :w !ls <bar> mvim -<CR>
Run Code Online (Sandbox Code Playgroud)

或者

nmap <Leader>r :w !ls \| mvim -<CR>
Run Code Online (Sandbox Code Playgroud)