VIM 中是否可以分隔外部(bash)命令?

VIM 中是否可以分隔外部(bash)命令?

鉴于以下情况

  1. 我想写一个文件
  2. 更改到文件所在目录
  3. 执行bash命令
  4. 更改到上一个目录

我做了以下命令

command Asc execute ":w | :cd %:p:h | !ansible-playbook --syntax-check % "

到目前为止这似乎有效。然而,用 改回以前的目录:cd -似乎不起作用。

command Asc execute ":w | :cd %:p:h | !ansible-playbook --syntax-check % | :cd -"

我的猜测是,管道和后面的内容是由 bash 解释的,而不是由 vim 解释的。

如何克服这个问题呢?还是根本没有办法?

PS:我知道vim的autochdir选项

答案1

:h :!:

A '|' in {cmd} is passed to the shell, you cannot use it to append a Vim command.  See :bar.

但你可以这样做:

command Asc execute ":w | ! cd %:p:h; ansible-playbook --syntax-check %"

这消除了返回的需要cd,因为只有执行的 shell 才会更改目录。

相关内容