Wenn ich Code aus einer anderen Datei kopiere, wird die Formatierung wie folgt durcheinander gebracht:
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
Wie kann ich diesen Code in vim automatisch formatieren?
c
vim
code-formatting
Yongwei Xing
quelle
quelle
Antworten:
Versuchen Sie die folgenden Tastenanschläge:
Erläuterung:
gg
Geht an den Anfang der Datei,=
ist ein Befehl zum Korrigieren des Einrückens undG
weist ihn an, den Vorgang bis zum Ende der Datei auszuführen.quelle
Ich benutze gerne das Programm Artistic Style. Laut ihrer Website :
Es läuft unter Windows, Linux und Mac. Es wird Dinge wie Einrücken, Ersetzen von Tabulatoren durch Leerzeichen oder umgekehrt, Platzieren von Leerzeichen um Operationen, wie Sie möchten (Konvertieren
if(x<2)
in, wenn( x<2 )
es Ihnen gefällt), Klammern in derselben Zeile wie Funktionsdefinitionen oder Verschieben in die Zeile unten usw. Alle Optionen werden über Befehlszeilenparameter gesteuert.Um es in vim zu verwenden, setzen Sie einfach die Option formatprg darauf und verwenden Sie dann den Befehl gq. So habe ich zum Beispiel in meiner .vimrc:
Wenn ich eine CPP-Datei öffne, wird formatprg mit den gewünschten Optionen festgelegt. Dann kann ich gg eingeben, um an den Anfang der Datei zu gelangen und gqGdie gesamte Datei gemäß meinen Standards zu formatieren. Wenn ich nur eine einzelne Funktion neu formatieren muss, kann ich zum Anfang der Funktion gehen, dann tippen gq][und es wird nur diese Funktion neu formatieren.
Die Optionen, die ich für Astyle habe
-T4pb
, sind nur meine Vorlieben. Sie können die Dokumente durchsehen und die Optionen ändern, damit der Code nach Ihren Wünschen formatiert wird.Hier ist eine Demo. Vor dem Astyle:
Nach Astyle (gggqG):
Hoffentlich hilft das.
quelle
Der eingebaute Befehl zum korrekten Einrücken des Codes wurde bereits erwähnt (
gg=G
). Wenn Sie den Code verschönern möchten , müssen Sie eine externe Anwendung wie Einzug verwenden . Da%
die aktuelle Datei im Ex-Modus bezeichnet wird, können Sie sie folgendermaßen verwenden:quelle
Mit dem Plugin vim-autoformat können Sie Ihren Puffer (oder Ihre Pufferauswahl) mit einem einzigen Befehl formatieren: https://github.com/Chiel92/vim-autoformat . Dafür werden externe Formatprogramme verwendet, wobei auf die Einrückungsfunktionalität von vim zurückgegriffen wird.
quelle
Ich finde das
clang-format
funktioniert gut.In der Clang-Dokumentation finden Sie einige Beispiel-Tastenkombinationen
Ich bevorzuge die
equalprg
Bindung in vim. Auf diese Weise können Sieclang-format
mitG=gg
oder anderen=
Einrückungsoptionen aufrufen .Fügen Sie einfach Folgendes in Ihre .vimrc-Datei ein:
quelle
sudo apt install clang-format
Vielleicht können Sie die folgenden $ indent -kr -i8 * .c versuchen
Hoffe es ist nützlich für dich!
quelle
Ich mag
indent
wie oben erwähnt, aber meistens möchte ich nur einen kleinen Abschnitt der Datei formatieren, an der ich arbeite. Daindent
kann Code von stdin nehmen, ist es wirklich einfach::!indent
.astyle
nimmt auch stdin, so dass Sie dort den gleichen Trick anwenden können.quelle
Ich wollte hinzufügen, dass Sie
:set paste
vor dem Einfügen tippen können, um zu verhindern, dass es an erster Stelle durcheinander kommt . Nach dem Einfügen können Sie:set nopaste
eingeben, dass Dinge wie js-Verschönern und Einrücken wieder funktionieren.quelle
:set paste!
dafür, was den Einfügewert umschaltet, anstatt ihn einzustellen. Dies erleichtert das Ausschalten, da Sie einfach einige Befehle zurückblättern und die Eingabetaste drücken können.Ihr ist ein Werkzeug namens
indent
. Sie können es mit herunterladenapt-get install indent
und dann ausführenindent my_program.c
.quelle