답변:
로부터 vim(1)
매뉴얼 페이지
+ {명령}
-c {명령}
첫 번째 파일을 읽은 후에 {command}가 실행됩니다. {command}는 Ex 명령으로 해석됩니다. {command}에 공백이 있으면 큰 따옴표로 묶어야합니다 (이것은 사용되는 쉘에 따라 다릅니다). 예 : Vim "+ set si"main.c
참고 : 최대 10 개의 "+"또는 "-c"명령을 사용할 수 있습니다.
다음과 같이 명령을 실행할 수 있습니다.
vim -E -c BundleInstall -c q
터미널에서 Vim 창을 열지 않습니다.
참고 : 첫 번째 답변에는 -s
다른 응용 프로그램에 필요했던 옵션이 포함 되었지만 여기에는 BundleInstall
명령 을 정의한 플러그인 소싱을 포함하여 Vim의 초기화가 많이 이루어지지 않았으므로 여기에 잘못되었습니다 .
-s
특정 메시지를 금지하는 것 이상 (초기화도 금지 함)을 잊어 버렸 으므로 BundleInstall의 정의가 제공되지 않았습니다. 첫 전에 다음과 같은 옵션을 추가하는 것입니다 해결하는 한 가지 방법 -c
: --cmd 'runtime plugin/bundle.vim'
. 해당 파일 이름을 편집하십시오. 참조하십시오 :help -s-ex
.
위의 vim 특정 레시피가 올바른 방법 이지만 autoexpect 와 같은보다 일반적인 접근 방식을 항상 사용할 수 있습니다 .
vim을 수동으로 시작한 것처럼 완전히로드해야하는 상황에서는 다음과 같이 작동합니다.
vim -c "autocmd! CursorHold * <commands to run>"
예를 들어, 출력을 :map
셸에서 파일 로 리디렉션하고 싶었지만 vim-airline 이 해당 탭을 표시 한 후에 만 생성 되는 매핑을 캡처하려고했습니다 (모든 버퍼 이름이 열린 상태로 표시됨). 이것은 비동기 적 -c
으로 파일에 대한 리디렉션을 실행하는 것이 매핑을 할 시간을주지 못했습니다. 더 좋은 방법이있을 수 있지만, 특히 이미 (0.1 초)로 updatetime
설정되어 이벤트가 발생할 100
때까지 걸리는 시간에 영향을 미칩니다 CursorHold
. 기본적으로 vim은 4 초로 설정합니다.
vim -c "autocmd! CursorHold * set nomore | redir! > mapNew | map | redir END | q"
vim +BundleInstall +qall!
.