Коли я копіюю код з іншого файлу, форматування буде зіпсовано, як це:
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
Як я можу автоформатувати цей код у vim?
Коли я копіюю код з іншого файлу, форматування буде зіпсовано, як це:
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
Як я можу автоформатувати цей код у vim?
Відповіді:
Спробуйте наступні натискання клавіш:
gg=G
Пояснення: gg
переходить у верхню частину файлу, =
це команда виправити відступ і G
каже йому виконати операцію до кінця файлу.
Мені подобається користуватися програмою Artistic Style. За їхнім веб-сайтом :
Художній стиль - це індектор вихідного коду, форматер та красувач для мов програмування C, C ++, C # та Java.
Він працює в Window, Linux та Mac. Він буде робити такі речі, як відступ, замінюючи вкладки пробілами або навпаки, розміщуючи пробіли навколо операцій, як вам більше подобається (перетворюється if(x<2)
на, якщо ( x<2 )
це так вам подобається), ставлячи дужки в ту саму лінію, що і визначення функцій, або переміщуючи їх до рядок нижче і т. д. Усі параметри контролюються параметрами командного рядка.
Для того, щоб використовувати його в vim, просто встановіть на нього опцію formatprg, а потім скористайтеся командою gq. Так, наприклад, у мене є .vimrc:
autocmd BufNewFile,BufRead *.cpp set formatprg=astyle\ -T4pb
так що коли я відкриваю .cpp файл, formatprg встановлюється з параметрами, які мені подобаються. Потім я можу набрати gg, щоб перейти до верхньої частини файлу та gqGвідформатувати весь файл відповідно до моїх стандартів. Якщо мені потрібно лише переформатувати одну функцію, я можу перейти до верхньої частини функції, а потім введіть gq][і вона буде переформатувати саме цю функцію.
Варіанти для astyle, -T4pb
- це лише мої вподобання. Ви можете переглядати їхні документи та змінювати параметри, щоб він форматував код, скільки завгодно.
Ось демонстрація. Перед стилем:
int main(){if(x<2){x=3;}}
float test()
{
if(x<2)
x=3;
}
Після стилю (gggqG):
int main()
{
if (x < 2)
{
x = 3;
}
}
float test()
{
if (x < 2)
x = 3;
}
Сподіваюся, що це допомагає.
Плагін vim-autoformat дозволяє форматувати ваш буфер (або вибір буфера) за допомогою однієї команди: https://github.com/Chiel92/vim-autoformat . Для цього для цього використовуються програми зовнішнього формату з відступом до функціональних можливостей відступу vim.
Я знаходжу це clang-format
працює добре.
Існує кілька прикладів сполучень клавіш у програмі документації кланг
Я вважаю за краще використовувати equalprg
зв'язування in vim. Це дозволяє звертатися clang-format
до того G=gg
чи іншого=
відступних параметрів.
Просто помістіть у свій .vimrc файл:
autocmd FileType c,cpp setlocal equalprg=clang-format
sudo apt install clang-format
Мені подобається, indent
як було сказано вище, але найчастіше я хочу відформатувати лише невеликий розділ файлу, над яким я працюю. Оскільки indent
можна взяти код з stdin, його дійсно просто:
:!indent
.astyle
також приймає stdin, тож ви можете використовувати ту саму хитрість.
Я хотів додати, що для того, щоб не заплутатися в першу чергу, ви можете набрати :set paste
перед вставкою. Після вставки можна набрати :set nopaste
такі речі, як js-прикрасити і відступи, щоб знову працювати.
:set paste!
для цього, що перемикає значення вставки, а не встановлює її. Це полегшує вимкнення, оскільки ви можете просто прокрутити кілька команд назад і натиснути клавішу Enter.