2011-01-03 17 views
7

Ich versuche, AStyle mit Vim arbeiten, so dass ich die "=" - Taste verwenden kann, um verschiedene Abschnitte des Codes neu einzurücken. Zum Beispiel möchte ich in der Lage sein, meinen üblichen =iB einzugeben, um den aktuellen Codeblock mit AStyle und nicht mit dem eingebauten Indenter einzurücken.Verwenden von AStyle in Vim

Ich habe versucht, nur gleich prg = Astyle in meinem Vimrc, aber das Problem ist, dass Astyle nur den ausgewählten Block empfängt, aber denkt, dass es eine ganze Datei empfängt. Daher ist der Einzug vollständig deaktiviert, wenn ich versuche, nur eine verschachtelte Klasse einzurücken.

Ich weiß, dass ich immer eine ganze Datei auf einmal umformatieren kann, aber gibt es eine Möglichkeit, astyle in vim zu verwenden, die das ursprüngliche Formatierungsverhalten von vim komplett repliziert (alle meine = -bewegungsbefehle funktionieren - und Bonuspunkte für autoindent) Verwenden Astyle auch!)?

+1

Wahrscheinlich sollten Sie "formatprg" anstelle von "equalprg" und 'gq' anstelle von' = 'verwenden. Dies scheint mir passender zu sein. Dies wird Ihr Problem jedoch nicht lösen. – Benoit

Antwort

3

Wenn es keine Version von AStyle mit einer partiellen Dateiformatierungsoption gibt, müssen Sie die zusätzliche Einrückung anwenden, nachdem Sie AStyle ausgeführt haben.

Ich bin nicht sicher, wie Sie das mit Bewegungen tun können.

Mit visueller Auswahl, können Sie den Einzug der ersten Zeile packen, den Code passieren equalprg, und fügen Sie dann die Vertiefung zu allen Zeilen:

vnoremap = <Esc>`<dwgv=`<<C-v>`>I<C-r>"<Esc> 

Brechen it down:

vnoremap -- so we can use = for equalprg 
<Esc>`< -- stop selecting and go to beginning of line at beginning of selection 
dw -- grab the initial indentation 
gv= -- reselect and indent as normal 
`<<C-v>`> -- block select the selection 
I<C-r>"<Esc> -- insert the initial indentation 

Vielleicht können Sie etwas Ähnliches mit Bewegungen tun?

0

Es funktioniert nur für Formatierer, die eine partielle Dateiformatierungsoption haben, wie idbrii bereits gezeigt hat. Ein Beispiel für einen Formatierer, der dies tut, ist clang-format.

Eine Möglichkeit, dies in vim zu integrieren, ist die Verwendung von vim-autoformat. Mit diesem Plugin können Sie viB und dann drücken Sie Ihren selbstdefinierten Formatschlüssel, wie <F3>. Dies formatiert dann nur den ausgewählten inneren Codeblock.

Verwandte Themen