Компілюючи код від vim


18

Новий в vimі я хочу, щоб можна було компілювати код зсередини, vimне запускаючи новий термінал і не викликаючи компілятор.

Як мені це робити? Зауважте, що ця вимога не обмежується gccлише мені, мені іноді потрібно зателефонувати pythonтакож за поточним сценарієм, над яким я працюю, щоб ви зрозуміли ідею ...

Відповіді:


25

Написати Makefile, тоді ви можете просто:

:make

зсередини vim. Якщо компіляція не вдається:

:copen

покаже вам попередження та помилки. Вибравши їх, ви перейдете до відповідного файлу та рядка.



6

Якщо вам не подобаються файли з якихось причин, ви можете зателефонувати до будь-якої команди за допомогою:!

Наприклад, ви можете використовувати ":! Javac * .java && java Foo" для компіляції та запуску простої програми java. Ви також можете викликати інші системи побудови (scons, cmake, ...) таким чином.


3

Спробуйте плагін Quickrun для Vim. Сторінка містить посилання на github, яка є останньою версією і якою я користуюся.

Перевага у використанні цього плагіна, на відміну від виконання :!, вихід із команди буде зібраний та показаний у розділеному вікні.

Також за замовчуванням цей плагін повісить ваш екземпляр vim, коли ви попросите його виконати команду, але він може бути налаштований на запуск команди асинхронно, що я і роблю. Прочитайте документацію для отримання більш детальної інформації.


3

Я використовую vim, у якому компільований інтерпретатор Python.

Я джерело файлу python, який має цю функцію:

def pyterm(filename="", interactive=1):
    cmd = "%s %s %s " % (PYTHON, "-i" if interactive else "", filename)
    if "DISPLAY" in os.environ:
        return run_config(os.environ.get("XTERM"), cmd)
    else:
        return os.system(cmd)

І нанесіть його на комбінацію клавіш:

nmap ;ru :update<CR>:python pyterm(vim.current.buffer.name, 0)<CR>
nmap ;ri :update<CR>:python pyterm(vim.current.buffer.name, 1)<CR>

Я раніше встановлював деякі змінні середовища, щоб визначити точний термінал, для якого потрібно запустити, якщо використовується gvim, або в тому ж терміналі, якщо не в X.

Тоді я зазвичай просто набираю '; ri' в буфер Python для запуску (зазвичай для тестування).


2

Vim можна використовувати для компіляції за допомогою gnu make для поточного файлу - навіть якщо для файлу немає Makefile (детальніше див. Тут ):

:make %:r

Таким чином , ВІМ надає доступ до QuickFix зворотного помилку від компілятора ( :help quickfixсписок) - :cnНаступна помилка, :cpпопередню помилку, :cwнові помилки вікна лістингу.

Якщо у вас немає gnu make, ви можете встановити змінну makeprg (змінити на g ++, якщо ви компілюєте C ++):

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

а потім скористайтеся командою vim make для складання поточного файлу та отримання списку швидких виправлень помилок vim:

:make

EDIT: Якщо ви також хочете запустити скомпільований виконуваний файл у межах vim, ви можете це зробити ('!' Executes, '%: r' - це ім'я файлу без суфікса):

:!./%:r

1

У випадку gcc, python тощо ви можете викликати це двокрапкою (:!)

Напр. :!python something.py


0
!gcc file.c && ./a.out

Це скомпілює ваш файл C, а також запустить виконуваний файл з проханням ввести все, що знаходиться у вашому вікні vim.


1
Більш повна відповідь включала б ":", і щоб зробити його більш універсальним, ви можете змінити "file.c" для поточного оператора файлів "%"::!gcc % && ./a.out
Pierz

Я щось подібне роблю в своєму .vimrc, я Command + Shift + Rmap <D-R> :exe '!gcc %:p' <bar> exe '!'.getcwd().'/a.out'<cr>
малюю

0

Що стосується конкретного випадку складання вихідного коду.

А якщо у вас є щось, що може компілювати python, встановіть makeprgвідповідно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.