Jak mogę autoformatować / wciąć kod C w Vimie?
Kiedy kopiuję kod z innego pliku, formatowanie jest popsute, tak:
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
Jak mogę autoformatować ten kod w Vimie?
10 answers
Wypróbuj następujące naciśnięcia klawiszy:
gg=G
Explanation: gg
idzie na górę pliku, =
jest poleceniem poprawiającym wcięcie i G
mówi mu, aby wykonał operację na końcu pliku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-18 13:34:48
Lubię używać programu styl artystyczny. Według strony :
Artistic Style jest wcięciem kodu źródłowego, formaterem i upiększaczem dla języków programowania C, C++, C# i Java.
Działa w systemie Windows, Linux i Mac. Będzie to robić takie rzeczy jak wcięcia, zastępowanie tabulatorów spacjami lub odwrotnie, umieszczanie spacji wokół operacji, jak chcesz (konwersja {[3] } Na if ( x<2 )
Jeśli tak ci się podoba), umieszczanie klamer w tej samej linii, co definicje funkcji, lub przeniesienie ich do poniższej linii, itp. Wszystkie opcje są kontrolowane przez parametry wiersza poleceń.
Aby użyć go w Vimie, wystarczy ustawić na niego opcję formatprg, a następnie użyć polecenia gq. Więc, na przykład, mam w moim .vimrc:
autocmd BufNewFile,BufRead *.cpp set formatprg=astyle\ -T4pb
Tak, że ilekroć otwieram a .plik cpp, formatprg jest ustawiony z opcjami, które lubię. Następnie mogę wpisać gg, aby przejść do góry pliku i gqg aby sformatować cały plik zgodnie z moim standardy. Jeśli muszę sformatować tylko jedną funkcję, mogę przejść do góry funkcji, następnie wpisz gq][ i sformatuje tylko tę funkcję.
Opcje, które mam dla astyle, -T4pb
, to tylko moje preferencje. Możesz przejrzeć ich dokumenty i zmienić opcje formatowania kodu, jak chcesz.
int main(){if(x<2){x=3;}}
float test()
{
if(x<2)
x=3;
}
Po astyle (gggqG):
int main()
{
if (x < 2)
{
x = 3;
}
}
float test()
{
if (x < 2)
x = 3;
}
Mam nadzieję, że pomaga.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-11 11:53:17
OP poprosił o automatyczne formatowanie, ale zaakceptował odpowiedź, która wykonuje tylko automatyczne wcięcia.
Oto różnica:
Oryginalny
int main(){if(x<2){x=3;}}
float test()
{
if(x<2)
x=3;
}
AUTOINDENT
int main(){if(x<2){x=3;}}
float test()
{
if(x<2)
x=3;
}
AUTOFORMAT
int main()
{
if (x < 2)
{
x = 3;
}
}
float test()
{
if (x < 2)
x = 3;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-21 07:46:44
Wbudowane polecenie poprawnego wcięcia kodu zostało już wspomniane (gg=G
). Jeśli chcesz upiększyć Kod, musisz użyć zewnętrznej aplikacji, takiej jak indent . Ponieważ %
oznacza bieżący plik w trybie ex, możesz go użyć w następujący sposób:
:!indent %
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-01 13:04:50
Wtyczka vim-autoformat umożliwia formatowanie bufora (lub zaznaczenia bufora) za pomocą jednego polecenia: https://github.com/Chiel92/vim-autoformat . używa do tego zewnętrznych programów formatujących, z funkcją wcięć Vima.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-06 11:59:43
Uważam, że clang-format
działa dobrze.
W dokumentacji clang
Wolę używać oprawy equalprg
w Vimie. Pozwala to na wywołanie clang-format
z G=gg
lub innymi opcjami wcięć =
.
Po prostu umieść następujące w swoim .plik vimrc:
autocmd FileType c,cpp setlocal equalprg=clang-format
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-27 02:34:18
Lubię indent
jak wspomniano powyżej, ale najczęściej chcę sformatować tylko mały fragment pliku, nad którym pracuję. Ponieważ indent
może pobierać Kod ze standardowego wejścia, jest to bardzo proste:
- wybierz blok kodu, który chcesz sformatować za pomocą V lub tym podobnych.
- Formatuj wpisując
:!indent
.
astyle
bierze stdin zbyt, więc można użyć tej samej sztuczki tam.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-13 14:41:41
Może spróbujesz $indent-kr-i8 *.c
Mam nadzieję, że jest to przydatne dla Ciebie!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-23 05:59:39
Chciałem dodać, że aby nie było to popaprane w pierwszej kolejności można wpisać :set paste
przed wklejeniem. Po wklejeniu możesz wpisać :set nopaste
, aby rzeczy takie jak js-beautify i wcięcia działały ponownie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-02 09:01:47
Ich jest narzędziem o nazwie indent
. Możesz go pobrać za pomocą apt-get indent
, a następnie uruchomić indent my_program.c
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-17 01:24:32