Использование AStyle в Vim - PullRequest
       17

Использование AStyle в Vim

7 голосов
/ 03 января 2011

Я пытаюсь заставить AStyle работать с Vim, чтобы я мог использовать клавишу "=" для повторного отступа в различных разделах кода. Например, я хотел бы иметь возможность набирать мой обычный =iB для отступа текущего блока кода, используя AStyle, а не встроенный отступ.

Я попытался просто установить equalprg = astyle в моем vimrc, но проблема в том, что astyle получает только выбранный блок, но думает, что получает целый файл. Поэтому отступ полностью отключается, когда я пытаюсь сделать отступ только для вложенного класса.

Я знаю, что всегда могу переформатировать весь файл сразу, но есть ли способ использовать astyle в vim, который полностью копирует исходное поведение форматирования vim (все мои команды = -перемещения работают - и бонусные баллы за autoindent, также используя astyle!)?

Ответы [ 2 ]

3 голосов
/ 23 февраля 2011

Если не существует версии AStyle с опцией частичного форматирования файла, вам потребуется применить дополнительный отступ после запуска AStyle.

Я не уверен, как вы можете сделать это с помощью движений.

При визуальном отборе вы можете извлечь отступ из первой строки, передать код equalprg, а затем добавить этот отступ для всех строк:

vnoremap = <Esc>`<dwgv=`<<C-v>`>I<C-r>"<Esc>

Разбивка:

vnoremap -- so we can use = for equalprg
<Esc>`< -- stop selecting and go to beginning of line at beginning of selection
dw -- grab the initial indentation
gv= -- reselect and indent as normal
`<<C-v>`> -- block select the selection
I<C-r>"<Esc> -- insert the initial indentation

Может быть, вы можете сделать что-то подобное с движениями?

0 голосов
/ 10 июня 2015

Работает только для форматеров, у которых есть опция частичного форматирования файлов, как уже указывалось в idbrii.Примером форматера, который делает это, является clang-format .

Один из способов интегрировать это в vim - использовать vim-autoformat .Используя этот плагин, вы можете viB, а затем нажать свою собственную клавишу форматирования, например <F3>.Это тогда только отформатирует выбранный внутренний кодовый блок.

...