나는 주로 C/C++ 프로그래밍을 위한 편집기로 vim을 사용합니다. 불행하게도 저는 빌드 프로세스가 작동하는 방식이 별로 만족스럽지 않습니다. :make
make 프로세스를 실행하기 위해 입력(또는 키에 매핑)할 수 있다는 것을 알고 있습니다 . 그러나 이 명령은 적절한 강조 표시 없이 동일한 터미널 창에서 빌드 프로세스를 실행하기 때문에 작동 방식이 마음에 들지 않습니다. 따라서 저는 일반적으로 두 번째 모니터의 다른 창에서 make 명령을 실행하여 기본 Vim 창에서 소스 코드를 스크롤하는 동안 한 창에서 컴파일러가 표시하는 빌드 오류를 올바르게 강조 표시하고 볼 수 있습니다. 포커스를 다른 창으로 변경한 다음 make 명령을 입력해야 하므로 이는 매우 지루한 작업이기도 합니다.
이제 내 질문은 다음과 같습니다. 포커스를 변경하지 않고 vim이 다른 창에서 make 명령을 실행하도록 할 수 있습니까? 이렇게 하면 "다른 창에서 빌드" 명령을 vim의 키에 매핑하고 단 한 번의 키 누르기로 모든 작업이 수행되도록 할 수 있습니다.
내 시스템은 i3를 DWM으로 사용하는 Manjaro Linux입니다.
(이 글을 stackoverflow에 게시해야 할지 여기에 게시해야 할지 잘 모르겠습니다. 잘못된 포럼이라면 용서해 주세요.)
답변1
명명된 파이프를 사용합니다.
- 터미널에서 Vim을 사용하여 소스 코드를 엽니다.
- 출력하려는 두 번째 터미널을 열고 를
make
사용하여 새 파이프를 만듭니다mkfifo mypipe
. - 두 번째 터미널에서는
watch --color -n 0.3 'cat mypipe'
항상 Named Pipe를 읽으려면 실행하세요. - 첫 번째 터미널에서
:!script -q -c "make" mypipe > /dev/null
소스 코드에 대한 변경 사항을 저장하고 Vim에서 실행하세요.
script
우리는 사용해야 한다컬러 출력을 유지하도록 프로그램을 속입니다.. 버전을 확인하세요watch
지원 색상.
답변2
다음 항목에 추가할 수 있습니다 ~/.vimrc
.
nnoremap <Space> :vert :term make<CR><C-W><C-w>
여기서는 Space주요 :vert :term make<CR><C-W><C-w>
명령을 다시 매핑합니다. 이는 다음을 의미합니다.
:vert
수직 분할을 수행합니다.:term
새 창에서 터미널을 실행하십시오.make<CR>
make
이 터미널에서 실행하세요.<C-W><C-w>
포커스를 원래 창으로 되돌립니다.
이것이 당신이 원하는 것이기를 바랍니다. 물론 원하는 키/조합을 선택하고(필수 아님 Space) 수평 분할을 선호하는 경우 :vert
비트를 제거하면 됩니다.