2013-10-14 14 views
8

Vim behandelt meinen Perl-Code als Kommentar und die automatische Einrückung funktioniert nicht.In Vim, wie vermieden werden, dass "/ *" als Kommentar behandelt wird

$dump=`cp /local/*.txt .`; 
if ($a == 0) 
{ 
    if ($b == 0) 
    { 
     print "HELLO"; 
    } 
} 

wurde formatiert:

$dump=`cp /local/*.txt .`; 
        if ($a == 0) 
        { 
        if ($b == 0) 
        { 
        print "HELLO"; 
        } 
        } 

Dies liegt daran, das „/ *“ in der ersten Zeile als Kommentar behandelt wurde und daher gibt Vim danach Einrücken etwas nach oben.

Ich denke an eine Abhilfe könnte als:

$dump=`cp /local/*.txt .`; #*/; 

manuell den Kommentar Nah.

Aber gibt es einen besseren Weg?

Danke.

+5

Haben Sie vielleicht eine Dateiendung wie '.c' und nicht' .pl'? Ändern Sie die Erweiterung, und die Einrückung sollte wie erwartet funktionieren. – TLP

+7

Um den @ TLP-Kommentar zu verfolgen, was zeigt ': set filetype?' In diesem Puffer? Das lässt dich wissen, ob Vim denkt, dass es eine Perl-Datei ist. –

+3

Sie könnten harmlos entkommen '' ':' $ dump = qx! Cp /local/\*.txt.! ' – mob

Antwort

4

Sie verwenden cindent, was speziell für die automatische Eingabe von C-Code (einschließlich C-Style-Blockkommentare) gedacht ist. Das hat kein Bewusstsein, dass Sie tatsächlich Perl schreiben. Versuchen Sie smartindent stattdessen scheint es mit Perl besser zu funktionieren. Um dies zu versuchen, führen Sie set cindent! und dann set smartindent. Wenn dies besser funktioniert, können Sie es in Ihrer .vimrc-Datei ändern.

Wenn Sie über den Schlüssel = zum Einrücken und nicht über den Einzug "ident-as-you-go" sprechen, wird ein separater Formatierer verwendet. Sie können ändern, was bei der Einstellung equalprg verwendet wird. Für Perl könnten Sie set equalprg=perltidy\ -quiet verwenden, um die ausgewählten Zeilen über perltidy auszuführen.

+0

Hallo, ich habe versucht, aber es scheint nicht zu funktionieren. Wenn ich "=" zum Einrücken verwende, wird immer/* als Kommentar verwendet. Ich denke das ist vim 3-teiliges Kommentarformat und unabhängig von cindent? –

+0

@PanYan Sie hatten nicht erwähnt, dass Sie '_' verwendet haben, um bis jetzt einzurücken. Aktualisierung meiner Antwort – AKHolland

+0

alle Ihre Kommentare sind korrekt. cindent fixed indentation beim Tippen deaktivieren und 'set equalprg = pertidy -quiet' für" = "drücken. Danke vielmals!! –

Verwandte Themen