makefile을 실행하는 동안 Vim이 내 디렉토리를 변경하는 것을 어떻게 막나요?

makefile을 실행하는 동안 Vim이 내 디렉토리를 변경하는 것을 어떻게 막나요?

글쎄, 나는 무슨 일이 일어나고 있는지 알기 전에 이 질문을 게시했습니다. Python과 C++ 코드가 혼합되어 있다고 가정해 보겠습니다. 저는 편집 디렉터리의 파일을 컴파일된 위치로 복사하는 간단한 makefile을 사용합니다(별도의 makefile.txt 사용).

내 물건:
        cp 소스.c 소스.h /some/other/dir
        Pushd/일부/기타/디렉토리 make && su -c "make install";Pushd

처음에는 source.c를 편집하고 :make를 실행한 다음 /some/other/dir/source.h(source.c 대체)를 사용하여 현재 창에서 새 버퍼를 열었습니다. 그런 다음 some_python.py를 편집하고 :make를 실행할 때 이것을 다시 시도했지만 /some/other/dir/source.h가 다시 열렸습니다. 누구든지 이것을 설명할 수 있나요? 내가 미쳐가는 걸까?


여러분, 안녕하세요,

Vim을 사용할 때 이런 성가신 문제가 발생했습니다. 파일을 편집한 다음 :make를 입력하여 동일한 디렉토리에서 Makefile을 자동으로 실행할 수 있다는 점이 마음에 듭니다. 그러나 Vim은 실행 후 내 디렉터리를 변경하고 있습니다. 예를 들어, 내 소스 파일이 /some/dir/source.c이고 /some/dir/library/에서 컴파일해야 하는 경우 내 makefile은 먼저 파일을 라이브러리 폴더에 복사한 다음 다른 makefile을 실행합니다.

move_files:
    cp /some/dir/source.c /some/dir/library/
    pushd /some/dir/libary/; make && su -c "make install"; popd

컴파일이 완료된 후 문제가 발생합니다. "vim /some/dir/source.c"로 vim을 시작한 다음 :make를 사용하면 컴파일이 완료되면 "/some/dir/libary/source.c"가 표시됩니다. 파일을 원래 위치에서 보고 싶습니다.

이게 말이 돼? 이 동작을 비활성화하려면 어떻게 해야 합니까?

감사해요!

고쳐 쓰다 나는 이전에 이런 실수를 한 적이 있습니다. make가 완료되면 복사된 헤더 파일이 포함된 새 버퍼가 내 창에 열립니다(컴파일하기 전에 .c를 편집하고 있었음에도 불구하고). 그래서 /some/dir/source.c를 열고 :make를 수행한 다음 /some/dir/library/source.h를 사용하여 현재 창에서 새 버퍼를 엽니다. 이상한? 원래 버퍼는 여전히 열려 있지만 이제 백그라운드에 있으므로 다시 전환해야 합니다.

답변1

makefile(stdout/stderr) 출력이 기본값을 트리거하는 것 같습니다.빠른 수정 모드당신의 정력.

아마도 /some/other/dir/source.h재귀 호출에 의해 컴파일되어 경고가 생성되고 빠른 수정 모드가 해당 위치로 이동합니다. 또는 파일 이름이 다른 makefile 출력의 일부이고, Quickfix 모드에서는 이를 컴파일러의 경고/오류 메시지로 착각합니다.

세션의 빠른 수정 모드를 비활성화하거나(필요하지 않은 경우) 오류 형식을 변경하거나 makefile을 변경하여 더 적은 출력을 생성해 볼 수 있습니다.

관련 정보