鉴于以下情况
- 我想写一个文件
- 更改到文件所在目录
- 执行bash命令
- 更改到上一个目录
我做了以下命令
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 才会更改目录。