Kiedy kopiuję kod z innego pliku, formatowanie jest pomieszane, jak poniżej:
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
Jak mogę automatycznie sformatować ten kod w vimie?
c
vim
code-formatting
Yongwei Xing
źródło
źródło
Odpowiedzi:
Wypróbuj następujące naciśnięcia klawiszy:
Objaśnienie:
gg
przechodzi na początek pliku,=
jest poleceniem do naprawy wcięcia iG
każe mu wykonać operację do końca pliku.źródło
Lubię korzystać z programu Styl artystyczny. Według ich strony internetowej :
Działa w systemach Windows, Linux i Mac. Będzie robił takie rzeczy, jak wcięcie, zamiana tabulatorów na spacje lub odwrotnie, umieszczanie spacji wokół operacji, które lubisz (konwersja
if(x<2)
do,( x<2 )
jeśli tak to lubisz), umieszczanie nawiasów klamrowych w tej samej linii co definicje funkcji lub przenoszenie ich do wiersz poniżej itp. Wszystkie opcje są kontrolowane przez parametry wiersza poleceń.Aby użyć go w vimie, po prostu ustaw dla niego opcję formatprg, a następnie użyj polecenia gq. Na przykład mam w moim .vimrc:
więc za każdym razem, gdy otwieram plik .cpp, formatprg jest ustawiany z opcjami, które lubię. Następnie mogę wpisać gg, aby przejść na górę pliku igqG sformatować cały plik zgodnie z moimi standardami. Jeśli muszę ponownie sformatować tylko jedną funkcję, mogę przejść na górę funkcji, a następnie wpisać, gq][a ona sformatuje tylko tę funkcję.
Opcje, które mam dla astyle
-T4pb
, to tylko moje preferencje. Możesz przeglądać ich dokumenty i zmieniać opcje, aby formatować kod w dowolny sposób.Oto demo. Przed astylem:
Po astyle (gggqG):
Mam nadzieję, że to pomaga.
źródło
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 wcięcie . Ponieważ%
oznacza bieżący plik w trybie ex, możesz go użyć w następujący sposób:źródło
Wtyczka vim-autoformat umożliwia formatowanie bufora (lub jego wyboru) za pomocą jednego polecenia: https://github.com/Chiel92/vim-autoformat . Wykorzystuje do tego programy w formacie zewnętrznym, z rezerwą na funkcję wcięć vima.
źródło
Uważam, że to
clang-format
działa dobrze.W dokumentacji clang znajduje się kilka przykładowych skrótów klawiszowych
Wolę używać
equalprg
wiązania w vimie. Pozwala to wywoływaćclang-format
z opcjami wcięciaG=gg
lub innymi=
.Wystarczy umieścić w pliku .vimrc następujące informacje:
źródło
sudo apt install clang-format
Może możesz wypróbować poniższe $ indent -kr -i8 * .c
Mam nadzieję, że Ci się przyda!
źródło
Podoba mi się,
indent
jak wspomniano powyżej, ale najczęściej chcę sformatować tylko niewielką część pliku, nad którym pracuję. Ponieważindent
można pobrać kod ze standardowego wejścia, jest to naprawdę proste::!indent
.astyle
zajmuje też standardowe wejście, więc możesz użyć tej samej sztuczki.źródło
Chciałem dodać, że aby uniknąć pomyłki, w pierwszej kolejności możesz pisać
:set paste
przed wklejeniem. Po wklejeniu możesz wpisać:set nopaste
takie rzeczy, jak js-beautify i wcięcia, aby znów działać.źródło
:set paste!
do tego, który przełącza wartość wklejania zamiast ustawiania. Ułatwia to wyłączenie, ponieważ wystarczy przewinąć kilka poleceń wstecz i nacisnąć Enter.Jest to narzędzie o nazwie
indent
. Możesz go pobrać za pomocąapt-get install indent
, a następnie uruchomićindent my_program.c
.źródło