Vim меньше, чем знак?

#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 .