다음과 같은 상황을 고려하여
- 파일을 쓰고 싶어요
- 파일이 있는 디렉토리로 변경
- 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 이 필요하지 않습니다 .