답변:
일반적으로 Vim이 대체 화면으로 전환되어 작동하기 때문에 발생합니다. 종료하면 Vim이 다시 전환되므로 Vim 세션에서 남은 것이 보이지 않지만 Vim을 시작하기 전에 명령 결과가 실행됩니다.
이 기능은 (링크) 에서 설명됩니다:h xterm-screens
따라서 기본적으로 원하지 않기 때문에 비활성화하고 싶습니다. 당신은 설정하여이를 수행 할 수 있습니다 :set t_ti= t_te=
비우이 수행 터미널 코드를.
모두 합치면 다음과 같이 Vim을 시작하고 싶을 것입니다.
vim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!'
'more'
적중 프롬프트가 표시되지 않도록 옵션을 재설정하고 있습니다.
less
하는 것입니다. 그냥 이렇게 덜 파이프 vim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!' | less
. 처음에는 레이아웃이 망가 졌을 수도 있지만 (내 터미널에 있음) <CL>을 누르면 모든 것이 멋지고 멋집니다.
vim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!'
"빠른 플래시"만 있고 명령이 코드 0으로 종료되고 출력이 없습니다. 뭔가 빠졌습니까?
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"