나는 그것을 사용하고 있다멀티플렉서그리고윔내 개발 IDE로. tmux에는 3개의 창이 열려 있습니다. 하나는 소스 코드 편집용, 하나는 디버깅용, 다른 하나는 디스플레이 콘솔용입니다.
make
Vim에서 이 명령을 실행 하고 Vim이 내보낸 모든 빌드 정보를 디스플레이 콘솔 창에 보내고 싶습니다 . 어떻게 해야 하나요?
답변1
한 창에서 모든 셸 명령을 실행하고 해당 run-shell
명령을 사용하여 다른 창에 해당 출력을 표시할 수 있습니다. 예를 들어:
tmux run-shell -t 2 "echo hello"
...그리고 "hello"는 창 번호 2에 인쇄됩니다. 를 사용하여 창 번호를 볼 수 있습니다 prefix + q
.
거기에서 vim
당신은 할 수 있어야합니다 :
:!tmux run-shell -t 2 "make ..."
-b
백그라운드에서 실행하는 명령을 추가했습니다 .
고쳐 쓰다:@SLN에서 제기된 일부 문제 해결이 댓글...
tmux
출력 창을 다음 위치에 배치합니다.복사 모드, 스크롤할 때와 동일한 패턴이므로 일반적인 방식으로 중단합니다( Ctrl+ C는 단방향입니다). 참고:[12/34]
창의 오른쪽 상단에 다음과 같은 항목(예: 페이지/총 페이지)이 표시되면 이 모드에 있는 것입니다.- 다른 명령이 완료된 후 Enter( 또는 Ctrl+ L)를 클릭해야 하는 Vim의 경우
make
Vim이 외부 명령( )을 처리하는 방식입니다:!cmd
. 이 문제를 피할 수 있는 방법은 없지만 Enter명령이 완료되기 전에 클릭하고 완료되면 반환되도록 할 수 있다고 생각합니다. (시스템에 따라 다를 수 있습니다.)
업데이트 2:나는 두 번째 항목에 대한 해결책을 알고 있습니다. 매핑을 사용하여 외부 명령을 실행하는 경우 Esc 키를 포함할 수 있습니다. 다음은 ls
쉘 명령을 따르는 예입니다.
nnoremap <leader>ls :!ls<CR><C-L>
일반 모드에서 ls 명령을 누르면 콘솔 출력이 닫히고 \ls
즉시 반환됩니다. vim
어쩌면 당신의 명령이 무엇이든 그에 적응할 수 있을 것입니다.
답변2
미리 파일을 터치할 수 있습니다 & tail -f file
: 창에 있습니다... vim에서 make를 시작하고 출력을 해당 파일로 리디렉션하면 make 세션이 표시됩니다...