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 -"

私の考えでは、パイプとその背後の内容がvimではなくbashによって解釈されるようです。

この問題を克服する方法は?それともまったく方法がありませんか?

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実行中のシェルだけがディレクトリを変更するため、returnは必要ありません。

おすすめ記事