次のような状況を考慮して
- ファイルを書きたいです。
- ファイルがあるディレクトリに変更
- 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 -"
私の考えでは、パイプとその背後の内容が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は必要ありません。