Vim autocmd (сохранить файл, запустить средство форматирования кода, перезагрузить файл) - PullRequest
6 голосов
/ 20 марта 2012

Я хочу интегрировать средство форматирования исходного кода Uncrustify с Vim. Подойдет любой из двух приведенных ниже вариантов.

  1. Отформатируйте код, который я сейчас редактирую (т.е. когда нажата gq).
  2. Форматируйте код, когда я сохраняю файл, а затем снова загружаю отформатированный файл в текущее окно Vim.

Вариант 1 является предпочтительным. Я пытался

set formatprg=uncrustify\ -c ~/misc/uncrustify.cfg --no-backup

т.е. Я называю Uncrustify с параметрами командной строки. Это не работает. Vi выдает ошибку E518: Unknown option: ~/misc/uncrustify.cfg.

Для варианта 2 я попробовал следующее в файле vimrc

autocmd bufwritepost *.cpp ! ~/bin/uncrustify -c ~/misc/uncrustify.cfg --no-backup <afile>

Файл форматируется после сохранения, но мне нужно вручную перезагрузить файл в Vim.

1 Ответ

4 голосов
/ 20 марта 2012

Вы пытались избежать пробелов:

:set formatprg=uncrustify\ -c\ ~/misc/uncrustify.cfg\ --no-backup

ОБНОВЛЕНИЕ

uncrustify печатает "Разбор: 170 байт ..."сообщение в stderr, поэтому нам нужно перенаправить его на /dev/null:

:set formatprg=uncrustify\ -c\ ~/misc/uncrustify.cfg\ -l\ CPP\ --no-backup\ 2>/dev/null

gq работает со строками, поэтому вы можете выбрать необходимые строки в визуальном режиме и выполнить gq,Например, если вы хотите переформатировать весь файл, выполните ggVGgq.

Больше информации на :help gq

...