Pull to refresh

Vim по полной: Компиляция и выполнение чего угодно

Website developmentVIM

Оглавление


  1. Введение (vim_lib)
  2. Менеджер плагинов без фатальных недостатков (vim_lib, vim_plugmanager)
  3. Уровень проекта и файловая система (vim_prj, nerdtree)
  4. Snippets и шаблоны файлов (UltiSnips, vim_template)
  5. Компиляция и выполнение чего угодно (vim-quickrun)
  6. Работа с Git (vim_git)
  7. Деплой (vim_deploy)
  8. Тестирование с помощью xUnit (vim_unittest)
  9. Библиотека, на которой все держится (vim_lib)
  10. Другие полезные плагины

Как можно назвать редактор удобным, если он не умеет запускать то, что мы программируем? Особенностью описываемого мной в данной статье плагина, является возможность запуска чего угодно, будь то программный код, plantUML, LaTeX, Less и всего, что можно написать и запустить. Плагин vim-quickrun может показаться довольно запутанным и сложным, не смотря на прекрасную документацию, потому я решил коротко осветить его в этой статье, дабы вы могли быстрее начать им пользоваться.

Компиляция и запуск редактором


Конечно средствами одного лишь редактора Vim не получится скомпилировать и/или запустить код, который мы в нем пишем. Для этого нам нужны сторонние утилиты, компиляторы и средства просмотра результата (на пример браузер, PDF читалка и т.д.). Плагин vim-quickrun позволяет определить набор инструментов, которые будут применяться к текущему файлу редактора с целью его компиляции и визуализации результата. Плагин довольно гибкий, что позволяет работать с любыми языками, если в системе установлены подходящие утилиты, конечно.

Определение типа


Плагин использует свойство filetype редактора Vim для определения типа запускаемого (обрабатываемого) файла. На практике это позволяет, на пример, работая с Web-проектом запустить в редакторе как PHP скрипт, так и скомпилировать Less файл и посмотреть результирующий CSS. Удобно, не правда ли?

Конфигурация


Плагин включает множество готовых решений для различных языков. Так, большинство современных ЯП компилируются и запускаются плагином «прямо из коробки» (при наличии соответствующих компиляторов и интерпретаторов). Это позволяет нам установить плагин и тут же начать им пользоваться, но кода мы сталкиваемся с более редкими языками, приходится немного «поколдовать». Для «колдовства» используется переменная редактора g:quickrun_config, которую следует инициализировать конфигурацией. Важно, что наша конфигурация всего навсего дополнит стандартную и нам не придется настраивать плагин для всех языков.

Для конфигурации плагина необходимо:
  • Определить компилятор/интерпретатор плагина с помощью свойства command
  • Определить команды, выполняющие пред- и постусловия с помощью свойства exec
  • Определить команду, отвечающую за визуализацию результата, с помощью свойства outputter

Вот несколько примеров:
Markdown
let g:quickrun_config = {
\ 'markdown': {
\   'outputter': 'browser',
\ },
\}


LaTeX
let g:quickrun_config = {
\ 'tex': {
\   'command': 'pdflatex',
\   'exec': ['%c -synctex=1 -interaction=nonstopmode "%S:t:r.tex"', 'evince "%S:r.pdf"', 'rm "%S:t:r.pdf" "%S:t:r.aux" "%S:t:r.log" "%S:t:r.synctex.gz"'],
\ },
\}


PlantUML
let g:quickrun_config = {
\ 'plantuml': {
\   'exec': ['java -jar ~/bin/plantuml.jar %S:p:h', 'display %S:p:r.png', 'rm %S:p:r.png'],
\   'outputter': 'null',
\ },
\}


Как можно заметить, свойство outputter больше служит как stdout, а exec может выступать в качестве command, все зависит от задачи.

Пока все


Чтобы скомпилировать и запустить текущий файл используется команда :QuickRun. Постоянно набирать ее не очень удобно, потому советую определить псевдоним в вашем .vimrc файле.
Пример
nmap :w:QuickRun

Статья оказалась не очень большой, но не стоит расстраиваться, впереди еще много интересного!
Tags:Vimvim-quickrun
Hubs: Website development VIM
Total votes 15: ↑15 and ↓0 +15
Views22.6K

Popular right now

Junior Clojure Developer
from 70,000 to 150,000 ₽Health SamuraiСанкт-ПетербургRemote job
Sales Development Representative/ Business development manager
from 80,000 to 120,000 ₽RoonyxRemote job
Frontend Development Lead
to 550,000 ₽NUTSonМоскваRemote job
Инженер по автоматизации тестирования web
from 130,000 ₽Онлайн-кинотеатр iviМосква
Инженер по автоматизации тестирования Android (Kotlin)
from 150,000 ₽Онлайн-кинотеатр iviМоскваRemote job

Top of the last 24 hours