Когда я копирую код из другого файла, форматирование портится, например:
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
Как я могу автоматически отформатировать этот код в vim?
c
vim
code-formatting
Юнвэй Син
источник
источник
Ответы:
Попробуйте следующие нажатия клавиш:
Объяснение:
gg
идет в начало файла,=
это команда для исправления отступа иG
говорит ему выполнить операцию до конца файла.источник
Мне нравится использовать программу Artistic Style. Согласно их веб-сайту :
Он работает в Window, Linux и Mac. Он будет делать такие вещи, как отступ, замена табуляции пробелами или наоборот, расстановка пробелов вокруг операций, которые вам нравятся (преобразование,
if(x<2)
если( x<2 )
вам нравится, если это так), размещение скобок в той же строке, что и определения функций, или перемещение их в строка ниже и т. д. Все параметры контролируются параметрами командной строки.Чтобы использовать его в vim, просто установите для него опцию formatprg, а затем используйте команду gq. Так, например, у меня есть в моем .vimrc:
так что всякий раз, когда я открываю файл .cpp, formatprg устанавливается с параметрами, которые мне нравятся. Затем я могу набрать gg, чтобы перейти к началу файла и gqGотформатировать весь файл в соответствии со своими стандартами. Если мне нужно переформатировать только одну функцию, я могу перейти в начало функции, затем набрать, gq][и она переформатирует только эту функцию.
Опции, которые у меня есть для astyle,
-T4pb
- это только мои предпочтения. Вы можете просматривать их документы и изменять параметры, чтобы форматировать код так, как вам нравится.Вот демо. Перед стилем:
После астиля (gggqG):
Надеюсь, это поможет.
источник
Встроенная команда для правильного отступа кода уже упоминалась (
gg=G
). Если вы хотите украсить код, вам нужно использовать внешнее приложение, такое как отступ . Поскольку%
обозначает текущий файл в режиме ex, вы можете использовать его следующим образом:источник
Плагин vim-autoformat позволяет форматировать буфер (или выбор буферов) с помощью одной команды: https://github.com/Chiel92/vim-autoformat . Для этого он использует программы внешнего формата с отступом к функциональности отступов vim.
источник
Я считаю, что это
clang-format
работает хорошо.Есть несколько примеров сочетаний клавиш в документации Clang
Я предпочитаю использовать
equalprg
привязку в vim. Это позволяет вызыватьclang-format
сG=gg
или другими=
параметрами отступа.Просто поместите в ваш файл .vimrc следующее:
источник
sudo apt install clang-format
Может быть, вы можете попробовать следующее $ indent -kr -i8 * .c
Надеюсь, это полезно для вас!
источник
Мне нравится,
indent
как упоминалось выше, но чаще всего я хочу отформатировать только небольшой раздел файла, над которым я работаю. Так какindent
можно взять код из stdin, это действительно просто::!indent
.astyle
также принимает стандартный ввод, так что вы можете использовать тот же трюк.источник
Я хотел добавить, что для того, чтобы не допустить путаницы, вы можете набрать
:set paste
текст перед вставкой. После вставки вы можете ввести:set nopaste
такие вещи, как js-beautify и отступ для работы снова.источник
:set paste!
для этого, который переключает значение вставки вместо установки его. Это облегчает выключение, так как вы можете просто прокрутить несколько команд назад и нажать Enter.Их инструмент называется
indent
. Вы можете скачать его с помощьюapt-get install indent
, а затем запуститьindent my_program.c
.источник