2011-01-05 12 views
5

Ich habe einen JavaScript-Code als eine lange Zeile geschrieben und ich möchte das neu formatieren, so dass jede Anweisung in einer Zeile geschrieben wird. Ist das mit Vim möglich? Ich habe die gqq und == Befehle ausprobiert und sie haben nicht funktioniert.Vim: Auto Formatierung lange einzelne Zeilen

Antwort

6

Es wird wahrscheinlich einfacher sein, zuerst mit regexp umformatieren:

:%s/;/;\r/gc
:%s/}/}\r/gc
:%s/{/{\r/gc
etc

Linie Rückkehr zum Einfügen nach; oder { }.

(wenn Sie sich sicher genug oder die Datei ist zu lang sind, nicht c nutzen es für eine Bestätigung für jedes Spiel fragen)

Sobald die Dateien auf verschiedenen Linien aufgeteilt ist, können Sie gg=G benutzen Sie die richtige Einrückung.

Soweit ich weiß, dass es nicht möglich ist, eine Linie auf mehreren Leitungen entweder mit GQ oder =

+0

Das ist großartig. Vielen Dank! – Rafid

+1

':% s/\ ([;} {] \)/\ 1 \ r/gc' ist bequemer. – zsrkmyn

0

wäre schön, zu spalten diese Aktionen in eine Funktion zu setzen, so dass die Arbeit einfacher.

function! FormatJavaScript() 
    :%s/;/;\r/gc 
    :%s/}/}\r/gc 
    :%s/{/{\r/gc 
endfun 
map <F2> <esc>:call FormatJavaScript()<cr> 

eine weitere Verbesserung der Funktion wäre eine Lücke zu setzen, so dass die Funktion auf sie wirkt, sondern auf die gesamte Datei handeln, die im Moment nicht erinnern. Ich schaue mir "help command" an, könnte mir jemand helfen?

3

Es gibt ein vim-Plugin, das die Formatierung Ihres Codes innerhalb von vim (mit einem Tastendruck) ermöglicht. Es ist vim-Autoformat genannt und Sie können es hier dowload:

https://github.com/Chiel92/vim-autoformat

Es externe Code-Formatierung Programme in vim integriert. Zum Beispiel, wenn Sie JavaScript-Code formatieren möchten, müssen Sie nur das Programm js-beautifier installieren (es ist im Repo erklärt), und alles funktioniert, ohne zu konfigurieren, Zeug.