prostu musiał rozwiązać dokładnie ten problem, więc pomyślałem, że przyczyniają się do ratowania innych trochę czasu.
Możesz użyć gg=G
, aby wprowadzić wcięcie kodu. Ale rzeczy stają się trudne do zrozumienia w momencie, w którym chcesz poprawić sposób automatycznego wcięcia. Dlatego jeśli zależy Ci tylko na tym, że usunięto zbędne białe znaki i nie obchodzi ich styl formatowania, to jest to najszybszy sposób na zrobienie tego, ponieważ jest wbudowany.
Jeśli chcesz kontrolować styl (na przykład chcesz, aby kod był zgodny z a style guide), do przetworzenia pliku będzie potrzebne zewnętrzne narzędzie. Możesz wywołać to narzędzie z poziomu vim za pomocą: :%!<toolname> <options>
. To potokuje plik za pomocą narzędzia i ponownie ładuje przetworzony wynik. (Możesz oczywiście użyć tego do wszystkiego, co chcesz zrobić do pliku)
Następne pytanie brzmi, jakie narzędzie zewnętrzne wybrać? Niezależnie od tego, metoda jest taka sama:
- Zainstaluj narzędzie wyboru
- się jej w drogę
- Dodaj linię do swojego pliku vimrc, który tworzy klawisz skrótu w obsłudze więc zaoszczędzić czas
- Użyj go.
Teraz, jakiego narzędzia używasz, zależy od stylu, który próbujesz skopiować. Jeśli próbujesz replikować szeroko używany styl, wtedy jest wszystko, czego potrzebujesz: astyle.
Jeśli starasz się replikować niestandardowy styl, a następnie trzeba będzie dwie rzeczy:
- UniversalIndentGui - przedni koniec, który pozwala bawić się z różnych opcji i live-podglądu ich wpływ na źródła złożyć
- zestaw narzędzi formatowania kodu źródłowego zainstalowanych w ścieżce
Między uncrustify i greatcode, powinieneś być w stanie całkowicie replikować żądany styl.
Właściwie to kłamałem. Jest inny sposób i nazywa się clang-format. Będziesz jednak chciał przeczytać dokumentację na jego temat i wciąż na wczesnym etapie, więc niektóre opcje nie działają zbyt dobrze. Jest to jednak piękne narzędzie (zdecydowanie najmądrzejsze z tego, ponieważ tworzy AST twojego kodu) i jest nawet dostępne dla Windows.
Jeśli masz zamiar poświęcić trochę czasu na przeczytanie instrukcji, sprawdź także GNU Indent.
Oczywiście, istnieje ostatnia droga, która faktycznie wymaga czasu, aby poznać zasady wcięcia vima i napisać dla swojego stylu. To zajmie trochę czasu, ale zadziała z gg=G
.
Kilka uwag na Astyle vs Uncrustify vs GreatCode:
- Astyle jest dobre dla ogólnego formatowania, ale nie może robić takie rzeczy jak wyrównać deklaracji zmiennych i komentarze re-style bardzo dobrze.
- Uncrustify może zrobić wiele rzeczy, których nie może astyle, ale przygotuj się na zabawę, dopóki nie znajdziesz właściwej kombinacji opcji, których potrzebujesz. (Lub, jeśli masz ochotę tracić dużo czasu, użyj algorytmów genetycznych, aby znaleźć najlepszą kombinację opcji dla Twojego stylu, a kiedy udostępnisz kod i podasz mi link, bym mógł go również użyć :))
Pamiętaj, że nie musisz wybierać jednego narzędzia. W vimie możesz odwzorować jedno naciśnięcie klawisza, aby wykonać kilka kolejnych poleceń, więc teoretycznie możesz użyć kombinacji tych narzędzi, aby uzyskać dokładnie to, czego szukasz.
Last but not least, oto fragment z mojego pliku .vimrc, gdzie mam zmapowany F12, aby wywołać Astyle z niektórych opcji:
"A2 = attached brackets
"-s8 indent 8 spaces
"-xc attached braces to class declarations
"-xj remove braces for single statement ifs and elses
"-c convert tabs to spaces in the non-indentation part of the line
map <F12> :%!astyle -A2 -s8 -xc -xj -c<CR>
Nie oceniaj mnie na styl. Po prostu użyj tego narzędzia, aby odtworzyć to, co chcesz.
Wow, to jest naprawdę świetne, bardzo dziękuję – flow
Czy można odwzorować to na kombinację klawiszy, taką jak ctrl + shift + F? –
Możesz także przesłonić operator wcięcia Vima ('='), aby użyć Astyle ustawiając 'equalprg' na astyle (np:' set equalprg = ~/astyle \ --style = google') – Parsa