그래서 제가 한동안 Vim에서 사용해 온 명령은 다음과 같습니다:
map <F10> :w<CR> :!clear; make %<<CR> :!./%<<CR>
파일의 현재 이름을 가져와서 컴파일한 다음 실행합니다. 그러나 이는 내 디렉토리를 오염시키고 이를 github에 업로드하려면 업로드하기 전에 확장자가 없는 모든 파일을 삭제해야 합니다.
내가 하고 싶은 것은 그것들을 모두 다음과 같이 컴파일하는 것이다.쓰레기통디렉토리이므로 명령을 다음과 같이 수정해 보았습니다.
map <F10> :w<CR> :!clear; make -C bin %<<CR> :!./bin/%<<CR>
명령이 디렉토리를 변경하는 것을 볼 수 있지만 -C
오류가 발생하여 작동하지 않습니다.
*** no rule to make target '17'. Stop.
이 명령이 작동하게 하려면 어떻게 해야 합니까?
map <F10> :w<CR> :!clear; make -C bin %<<CR> :!./bin/%<<CR>
답변1
:make
Vim의 명령 과 운영 체제 실행 파일을 혼동하고 계십니다 make(1)
. Vim의 명령줄에 입력 하면 make
Vim의 명령이 실행됩니다 :make
. 이것의 효과 중 하나는 Vim의 options 에 정의된 운영 체제 명령을 실행하는 것입니다 makeprg
.
이제 makeprg
기본값이 있으므로 make
운영 체제 명령 make(1)
도 실행됩니다. 하지만 Vim의 명령은 :make
옵션을 허용하지 않으므로 -C bin
Vim의 명령줄을 전달한다고 해서 Vim이 실행 중이라는 의미는 아닙니다 make -C bin
. 실행되는 운영 체제 명령을 변경하려면 다음을 수행해야 합니다.
let &makeprg = 'make -C /path/to/bin'
그런 다음 Vim에서 이를 실행하면 :make
OS 명령이 실행됩니다 make -C /path/to/bin
.
그러나 주석에서 지적했듯이 이 문제를 처리하는 더 좋은 방법은 처음부터 문제를 피하고 관련 없는 모든 파일을 .gitignore
. Git 저장소.