ссылка на имя файла в vi - PullRequest
       38

ссылка на имя файла в vi

0 голосов
/ 02 октября 2009

Иногда я запускаю make прямо из командной строки vim. Однако иногда мне бы хотелось создать один файл, который сейчас редактируется: !g++ filename.cpp. Есть ли ярлык для ссылки на файл без необходимости набирать его? ..

Ребята, я вообще не хочу использовать make. все, что я хочу сделать, это собрать его из командной строки vi, используя g ++ / gcc

Ответы [ 5 ]

8 голосов
/ 02 октября 2009

Вы можете использовать % для ссылки на текущий файл так:

:!g++ %
2 голосов
/ 02 октября 2009

Если ваша программа make на самом деле является GNU make, просто выполните:

:make %<

Если вы хотите добавить флаги, такие как -Wall или -pedantic, просто установите $ CFLAG (для компиляции файлов C или $ CPPFLAGS для файлов C ++) или, если вы хотите указать библиотеки, установите $ LDFLAGS из vim.

:h :make
:h %<

EDIT: В отличие от простых вызовов:! Gcc, это решение совместимо с режимом быстрого исправления (: h quickfix), и для него не требуется изменять & makeprg на 'g ++ $ CPPFLAGS -o $ * $ *. Cpp $ LDFLAGS'.

Примечание:

  • Нет необходимости писать какой-либо make-файл, чтобы воспользоваться GNU-make.
  • И даже если у вас есть один Makefile, и пока вы не возитесь с неявными правилами по умолчанию, это решение также будет работать!
2 голосов
/ 02 октября 2009

Вы можете использовать это для ссылки на имя файла, над которым вы работаете, с расширением, замененным на .o:

%r.o

Ваш filename.cpp становится filename.o, что полезно, если вы добавите что-то подобное в ваш .vimrc.:

set makeprg=gmake\ %:r.o

Таким образом, вы можете просто сделать это в vim, и он запустит команду, объявленную с использованием makeprg для текущего файла:

:make
2 голосов
/ 02 октября 2009

в VIM "%: p" обозначает текущий файл.

попробуйте "! G ++%: p"

1 голос
/ 02 октября 2009

Как уже упоминалось, ярлык%.

Вы можете связать все это с одним ключом, добавив в файл .vimrc следующее:

map <F9> :!gcc %<CR>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...