Вызов оболочки в :map <leader>m :!make && ./%
вызывает программу make, которая выполняет поиск Makefile для обработки. Рецепты в Makefile описывают, как скомпилирована ваша программа, и как вызывается окончательный исполняемый файл (или по умолчанию он равен a.out
, если он опущен). Хотя имя файла, который вы редактируете (ссылка %
), может иметь тот же префикс, что и искомое исполняемое имя файла, это не гарантируется.
Для компиляции, запуска и редактировать вывод вашей программы в разделенном окне написать рецепт Makefile, который будет автоматически запускаться после компиляции и перенаправляет вывод исполняемого файла во временный файл, например:
.PHONY: all
all: executablename runlog
executablename: executablename.c
cc -o executablename executablename.c
runlog: executablename
./executablename >runlog
Имейте в виду, что 8 областей с отступами необходимо заменить вкладкой для функции Makefile.
Ссылка временный файл в вашем отображении: :map <leader>m :!make^M:sp runlog^M
где ^M
проистекает из набрав Ctrl +Return.
Время, сохраненное с помощью ярлыка лидера, будет потрачено на удаление дополнительных файлов. –
Вам не нужно удалять файлы для этого, потому что перенаправление оболочки _> runlog_ внутри Makefile перезаписывает _runlog_ каждый раз. Если вы беспокоитесь о файле, переадресуйте его на _/tmp/runlog_cleaned_up_by_system_ или добавьте удаление в чистый рецепт в Makefile. Кроме того, я не понимаю вашего намерения сэкономить время с сопоставлением лидеров (по сравнению с обычным сопоставлением), моему понимающему руководителю просто удобное пространство имен для ваших собственных сопоставлений. – 149
Как я мог бы это сделать, если бы мне приходилось выполнять разные программы для компиляции в том же Makefile? Не существует способа использовать имя файла минус .filetype? –