Mój scenariusz jest: używam VIM, aby otworzyć kilka plików .CPP, na przykład

vim 1.cpp src/2.cpp root/src/3.cpp

Czasami chcę odbudować 3.CPP, więc muszę użyć innego okna

"rm root/src/3.o"

I wewnątrz VIM, typ

":make"

To działa dobrze, np. Ale szukam funkcji / polecenia .vimrc:

Kiedy przełączam się na bufor, np. "Root / SRC / 3.CPP" i naciśnij ten polecenie, VIM wykryje katalog "Root / SRC", a nazwa pliku bez przyrostka "3" i automatycznie wykonuje polecenie "RM Root / SRC / 3.O ".

W takim przypadku mogę swobodnie przełączać się na każdy bufor i ponownie wyzwolić kompilację tego samego pliku.

Uwaga Nie chcę mapować komendy narzędzia Gmake, takiego jak "Make Clean", ponieważ używamy kilku różnych narzędzi, takich jak Scons, Cmake itp.

Jak więc napisać tę funkcję / polecenie w .vimrc? Dzięki.

0
Troskyvs 17 luty 2017, 10:49

2 odpowiedzi

Najlepsza odpowiedź

:call system('rm '.expand('%:p:r')) Jak powiedział @kent, a nawet po prostu :!rm %:p:r.

Ale jestem bardzo zaskoczony, że musisz to zrobić. Narzędzia odpowiedzialne za łańcuchy kompilacji zazwyczaj rozumieją zależności (które kiedykolwiek są narzędzie), i nie powinieneś usunąć pliku obiektu, który często potrzebuje mapowania, aby to zrobić.

PS: Jest idealnie możliwy (ale muszę Zaktualizuj dokument), aby obsługiwać CMAKE lub kompilację z VIM lub poza źródłem. Ale rzeczywiście, z kompilacją poza źródłami, nie trzeba ręcznie usunąć te pliki, a :make clean if :make już działa.

3
Luc Hermitte 17 luty 2017, 10:33

Możesz uzyskać root/src/3 z root/src/3.cpp bufora przez:

expand('%:p:r')

Następnie możesz skonfigurować .o, aby zakończyć i zbudować polecenie.

2
Kent 17 luty 2017, 09:00