Ich habe ein Stück schlecht formatierten Perl-Code:
if ($a==1){
&err_report("$a");
while($b!=1){
&err_ok();
}
}
Ich möchteNeuformatierunges in Vim. Nach Verwendung des Befehls gg=G
wird der Code wie folgt formatiert:
if ($a==1){
&err_report("$a");
while($b!=1){
&err_ok();
}
}
Eigentlich möchte ich es in Vim wie folgt formatieren:
if ($a==1){
&err_report("$a");
while($b!=1){
&err_ok();
}
}
Was soll ich machen?
- Nach dem Gebrauchvim-perl, die automatische Formatierung funktioniert immer noch nicht wie gewünscht.
Antwort1
Vorausgesetzt, Sie verwenden ein Unix-ähnliches Betriebssystem ...
ErgatternAbonnieren(ein hochgradig anpassbarer Perl-Code-Einrücker/Formatierer). Aktualisieren Sie dann Ihre ~/.vimrc
Datei, um Folgendes einzuschließen:
filetype plugin indent on
autocmd FileType perl setlocal equalprg=perltidy\ -st
Damit können Sie jeden beliebigen Perl-Codeblock markieren und ihn dann durch Drücken von neu formatieren =. Dabei wird vorausgesetzt, dass perltidy
in Ihrem gefunden wird $PATH
, andernfalls geben Sie einfach den vollständigen Pfad zur ausführbaren Datei an.
Standardmäßig perltidy
wird Ihr Code wie folgt formatiert:
if ( $a == 1 ) {
&err_report("$a");
while ( $b != 1 ) {
&err_ok();
}
}
... aber durch die Verwendung von -i=2
( --indent-columns=2
) und -pt=2
( --paren-tightness=2
) (Sie würden diese Optionen in Ihre ~/.perltidyrc
Datei einfügen, eine pro Zeile) erhalten Sie
if ($a == 1) {
&err_report("$a");
while ($b != 1) {
&err_ok();
}
}
Das ist so ziemlich das, was Sie verlangt haben.
Wenn Sie wirklich nie wieder Leerzeichen nach haben dürfen while
, verwenden Sie -nsak=while
( --nospace-after-keyword=while
).
Antwort2
Legen Sie zunächst die erforderlichen Formatierungsoptionen fest, z. B. set cindent sw=2 expandtab
(C-ähnliche Einrückung verwenden, 2 Leerzeichen einrücken, Tabulatorzeichen zu Leerzeichen erweitern). Dann rücken Sie die gesamte Datei/den gesamten Puffer ein.
Antwort3
Vim wird mit einem Perl-Einrückungs-Plugin geliefert und solange Sie es :filetype indent on
irgendwo in Ihrem Start (z. B. in Ihrer vimrc) haben, sollte es in der Lage sein, Perl-Dateien für Sie einzurücken. Beachten Sie jedoch, dass es nur Einrückungen vornimmt, aber keine Zeilenumbrüche hinzufügt oder entfernt.