2017-02-17 21 views
0

мой сценарий: Я использую Vim, чтобы открыть некоторые .cpp файлы, напримерVIM: как получить путь к файлу/каталог открытого буфера и что-то сделать?

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

Иногда я хотел бы восстановить 3.cpp так что я должен использовать другое окно

"rm root/src/3.o" 

и внутри Vim, тип

":make" 

Это прекрасно работает, NP. Но я ищу функцию .vimrc/команду, которая:

Когда я переключаюсь в буфер, например. «root/src/3.cpp» и нажмите эту команду, vim определит каталог «root/src» и имя файла без суффикса «3» и автоматически выполнит команду «rm root/src/3.o ».

В этом случае я могу случайно переключиться на любой буфер и повторно запустить сборку этого самого файла.

Примечание Я не хочу, чтобы отобразить gmake команду инструмента, как «сделать чистым», потому что мы используем несколько различных утилит сделать как Scons, CMake и т.д.

Так как писать эту функцию/команду в .vimrc? Благодарю.

+1

Я не думаю, что нужно писать жирным шрифтом и большим шрифтом, чтобы прочитать вопрос. Как будто ты кричишь мне в глаза. – bitcell

ответ

3

:call system('rm '.expand('%:p:r')) как @Kent сказал, или даже просто :!rm %:p:r.

Но я очень удивлен, что вам нужно это сделать. Инструменты, отвечающие за цепочки компиляции, обычно понимают зависимости (которые когда-либо были в инструменте), и вам не нужно будет удалять объектный файл, который часто требует сопоставления, чтобы сделать это для вас.

PS: это отлично possible (but I need to update the doc) для поддержки компиляции CMake или out-of-source из vim. Но действительно, с компиляцией вне источников, вам не нужно будет удалять эти файлы вручную, :make clean, если :make уже работает.

2

вы можете получить root/src/3 из root/src/3.cpp буфера по:

expand('%:p:r') 

Тогда вы можете сцепить .o до конца, и строить команду.