2010-07-28 1 views
2

По умолчанию makeprg установлено значение только make. Тем не менее, у меня есть много проектов, в которых разные конфигурации и цели сборки находятся в одном каталоге.Set «makeprg» через режимной_строки в Vim

Это, конечно, требует, чтобы я указать цель при вызове make.

Например, у меня есть проект, который создан для создания исходного файла <foo>.cpp путем вызова make foo, а проект содержит ряд таких исходных файлов.

Как я могу добиться того, что когда я редактирую сказал <foo>.cpp в Vim, makeprg установлен в make <foo>? Я думал ModeLines в каждом файле, но установка makeprg через режимной_строки запрещено (из соображений безопасности?).

Обратите внимание, что эта настройка подходит только для некоторых проектов, так что я не хочу, чтобы изменить значение общего из make - в противном случае я бы просто

set makeprg=make\ expand("%:t:r") 

(или что-то подобное) в моем .gvimrc.

ответ

3

Я использую plugin шахты, которая позволяет настройки конкретных проектов для настройки такого рода вещей. Таким образом, мой .vimrc не загроможден проектами. Вместо этого в каждом корневом каталоге проекта у меня есть файл _vimrc_local.vim, содержащий мои различные настройки.

Другим решением было бы инкапсулировать :make вызов в другую команду или отображение, которое в свою очередь вызывает :make с переменной, которую можно установить с другим плагином: let-modeline.

PS: .gvimrc призван содержать вещи, характерные для графической версии Vim. Поставив ваши настройки в ваш .gvimrc, простой vim не будет настроен.

+0

повторно в '.gvimrc' файла: я, конечно, Я это понимаю. Я использую оба, мой вопрос просто не был последовательным. Этот плагин выглядит многообещающим - на самом деле, я считаю, что это именно то, что я ищу. –

1

Вы должны быть в состоянии отобразить :make %<, которые я считаю, будет делать то, что вы хотите

0

Это должно быть возможно что-то подобное с автокомандами, если вы можете отличить ваш проект не режимной_строки, но их папкой. Ниже приведена комбинация примера из :help autocmd-patterns и вашего примера кода.

:autocmd BufRead /source/foo-project/*.cpp set makeprg=make\ expand("%:t:r") 

(Обратите внимание, что я не проверил это точно команды, а у меня есть некоторые автокоманды для установки makeprg в зависимости от типа файла в моем vimrc)

+0

В предыдущем (аналогично, но удален, кажется) anwser, ОП сказал он предпочел бы не загромождать его .vimrc с настройками конкретного проекта. –

+0

örn: Спасибо, но Люк прав. –

Смежные вопросы