#vim
#vim
Вопрос:
Я нашел, как скомпилировать текущий буфер в vim с помощью make:
set makeprg=g -o %< %
Я знаю, что %
означает «текущий буфер», но мне интересно, что означает меньше знака ( <
)?
Кроме того, по этой ссылке http://vim.wikia.com/wiki/Make-compile_current_buffer упоминает, что %<
это устарело. Есть ли другой способ?
Комментарии:
1. Вы можете сделать его более читаемым с помощью
:let amp;makeprg='g -o %< %'
(если вам нужно вставить одинарную кавычку, удвойте ее. В противном случае все интерпретируется буквально.
Ответ №1:
Это определение команды под названием makeprg, которая вызывает g . < — это просто стандартное обозначение в большинстве оболочек для передачи содержимого текущего файла в процесс, поэтому он будет передавать (ну, более формально, перенаправлять stdin) в текущий буфер. Другими словами, он скомпилирует текущий буфер.
Ответ №2:
«%<» расширяется до имени текущего буфера без расширения. Смотрите :help _%<
. Итак, когда вы в данный момент редактируете myfile.c, ваш makeprg
параметр расширяется до g -o myfile myfile.c
, который скомпилирует myfile.c в исполняемый файл myfile
.