【发布时间】:2017-05-18 23:10:35
【问题描述】:
我正在尝试在 vim 中创建一个键映射,它 (a) 保存当前文件 (b) 执行 git 操作,使用 shell (c) 退出当前 vim 编辑器。
我尝试了以下方法,但仍然无法弄清楚。
方法一 - 在 Vim 命令行中
:w | !git commit -am "auto" | q
方法2 - 在.vimrc中
map :W :w \| !git commit -am "auto"
map :L :Wq
问题
问题是管道| 只能用于附加shell 命令。我该怎么做'a Vim command' + 'a shell command' + 'a Vim command'?如何在 shell 命令之后通过管道传递 vim 命令?
【问题讨论】:
-
这绝对不是@Barmar标记的问题的重复!我已经描述得很清楚了。 问题在于管道 |只能用于附加shell命令。 Barmar提到的问题仅适用于纯shell命令管道。相比之下,我的问题要求结合 一个 shell 命令和一个 vim 命令!
-
另一个问题是关于运行两个
vim命令。其中一个命令恰好是执行 shell 命令的!命令,但这两个命令可以是任何命令。 -
pdflatex和git不是vim commands,它们是shell commands。您必须使用!在 vim 中执行它们。在我的问题中,q将被转换为!q即q (in bash)并产生错误。 -
顺便说一句,短语
vim commands不是代码,不应在反引号中引用。考虑斜体强调。顺便说一句,你们都介意链接到提议的欺骗,以便其他人有上下文就此事做出明智的决定吗? -
:!、according to the docs 之后不能使用管道。