Что делает команда: compiler в Vim? - PullRequest
24 голосов
/ 13 июня 2010

Недавно я обнаружил, что в Vim есть команда под названием compiler.Вы можете вызвать его с помощью любого распространенного компилятора (например,: compiler gcc,: compiler php и т. Д.), Но это, похоже, не дает немедленного эффекта.

Я искал на страницах man, но не сделал 'Не могу найти ничего полезного в том, что он на самом деле делает, равно как и Vim Wiki.Кто-нибудь знает, что на самом деле делает эта команда?

Ответы [ 4 ]

17 голосов
/ 13 июня 2010

Он устанавливает параметры для этого компилятора, например, программу, используемую для :make, и формат сообщений об ошибках, чтобы vim мог перейти к местам ошибок.Найдите в $VIMRUNTIME/compiler/ различные файлы .vim, которые можно получить.

:help write-compiler-plugin

Плагин компилятора устанавливает параметры для использования с конкретным компилятором.Пользователь может загрузить его с помощью команды :compiler.Основное назначение - установить параметры errorformat и makeprg.

См. Также :help errorformat и :help makeprg.

Вот файл компилятора GCC на моей машине:например:

/ usr / share / vim / vim72 / compiler / gcc.vim

" Vim compiler file
" Compiler:         GNU C Compiler
" Maintainer:       Nikolai Weibull <now@bitwi.se>
" Latest Revision:  2006-12-20

if exists("current_compiler")
  finish
endif
let current_compiler = "gcc"

let s:cpo_save = &cpo
set cpo-=C

CompilerSet errorformat=
      \%*[^\"]\"%f\"%*\\D%l:\ %m,
      \\"%f\"%*\\D%l:\ %m,
      \%-G%f:%l:\ %trror:\ (Each\ undeclared\ identifier\ is\ reported\ only\ once,
      \%-G%f:%l:\ %trror:\ for\ each\ function\ it\ appears\ in.),
      \%f:%l:\ %m,
      \\"%f\"\\,\ line\ %l%*\\D%c%*[^\ ]\ %m,
      \%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
      \%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
      \%D%*\\a:\ Entering\ directory\ `%f',
      \%X%*\\a:\ Leaving\ directory\ `%f',
      \%DMaking\ %*\\a\ in\ %f

if exists('g:compiler_gcc_ignore_unmatched_lines')
  CompilerSet errorformat+=%-G%.%#
endif

let &cpo = s:cpo_save
unlet s:cpo_save
10 голосов
/ 22 ноября 2014

Vim обычно имеет несколько установленных конфигураций компилятора, как уже упоминалось, поэтому он автоматически выберет подходящую.Чтобы фактически использовать конфигурацию компилятора, вам нужно использовать функцию Vim: make, как также упоминалось, но режим работы по умолчанию предполагает существование Makefile.

Если вы просто пытаетесь сделать быстрыйскомпилировать текущий файл / буфер (без существующего Makefile), затем, если у вас установлен GNU make, вы можете просто скомпилировать его так (как описано здесь ):

:make %:r

И этоскомпилирует файл и предоставит vim сообщения об ошибках / предупреждениях, чтобы вы могли перемещаться по каждому из них, используя список quickfix (:help quickfix) - :cn Следующая ошибка, :cp Предыдущая ошибка, :cw Новыйокно со списком ошибок.

Если у вас не установлен GNU make, вы можете установить эту переменную - либо сразу в текущем сеансе, например:

:se makeprg=gcc\ -o\ %<\ %

, либо поместить ее в ~ /.vimrc file:

set makeprg=gcc\ -o\ %<\ %

Затем вы можете набрать:

:make

И он скомпилирует файл и предоставит вам список quickfix ошибок / предупрежденийв Vim.

РЕДАКТИРОВАТЬ: Если вы тоже хотитеt для запуска скомпилированного исполняемого файла из vim, который вы можете сделать («!» выполняет, «%: r» - это имя файла без суффикса):

 :!./%:r
1 голос
/ 13 июня 2010
:help compiler

Устанавливает параметры выбранного компилятора для текущего буфера.

0 голосов
/ 17 июня 2010

Если вы редактируете файл java, вы можете выполнить: compiler javac, а затем: make%, чтобы скомпилировать текущий файл ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...