Como impedir que o Vim altere meu diretório ao executar um makefile?

2

OK, eu postei essa pergunta antes de saber a extensão do que estava acontecendo. Suponha que eu tenha uma mistura de código Python e C ++. Eu uso um makefile simples que copia os arquivos do meu diretório de edição para onde eles são compilados (com um makefile separado.

my_stuff:
        cp source.c source.h /some/other/dir
        pushd /some/other/dir; make && su -c "make install"; popd

Originalmente, eu estava editando source.c, running: make e, em seguida, um novo buffer aberto na minha janela atual (substituindo source.c) por /some/other/dir/source.h. Então tentei novamente enquanto editava o some_python.py e o running: make e mais uma vez ele abriu o /some/other/dir/source.h. Alguém pode explicar isso? Eu estou ficando louco?

Olá a todos,

Estou tendo este problema chato com o Vim. Eu gosto do fato de que eu posso estar editando um arquivo e então digitar: make para executar automaticamente um Makefile no mesmo diretório. No entanto, o Vim está mudando meu diretório depois que ele é executado. Por exemplo, se meu arquivo de origem for /some/dir/source.c e precisar ser compilado em / some / dir / library /, meu makefile primeiro copia o arquivo para a pasta de biblioteca e, em seguida, executa outro makefile.

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

O problema ocorre após a conclusão da compilação. Se eu iniciar o vim como 'vim /some/dir/source.c' e, em seguida, usar: make, quando a compilação terminar, estou vendo '/some/dir/libary/source.c'. Eu gostaria de ver o arquivo no local original.

Isso faz sentido? O que posso fazer para desativar esse comportamento?

Obrigado!

UPDATE Eu estava enganado antes - quando o make é concluído, um novo buffer é aberto na minha janela que tem o arquivo de cabeçalho copiado (mesmo se eu estivesse editando o .c antes da compilação). Então eu abro o /some/dir/source.c, então faço: make, então na minha janela atual um novo buffer é aberto com /some/dir/library/source.h. Esquisito? O buffer original ainda está aberto, mas preciso voltar a ele já que agora está em segundo plano.

    
por Mr. Shickadance 28.02.2011 / 15:30

1 resposta

2

Parece que sua saída do makefile (stdout / stderr) aciona o modo de correção rápida padrão do seu vim

Talvez /some/other/dir/source.h seja compilado por sua chamada de chamada recursiva e um aviso seja produzido e o modo de correcção rápida salte para sua localização. Ou o nome do arquivo é parte de outra saída do makefile e o modo de correção rápida o confunde com uma mensagem de aviso / erro do compilador.

Você pode tentar desabilitar o modo de correção rápida para a sua sessão (se você não precisa), alterar o formato de erro ou alterar seu makefile para gerar menos resultados.

    
por 01.03.2011 / 23:50

Tags