2013-10-14 9 views
8

Vim continua a trattare il mio codice perl come commenti e l'indentazione automatica non funziona.In Vim, come evitare di considerare "/ *" come commento

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

stata formattata come:

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

Questo perché la "/ *" nella prima riga è stata trattata come commento e quindi Vim arrende rientro nulla dopo.

riuscivo a pensare a una soluzione come:

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

Per chiudere manualmente il commento.

Ma c'è un modo migliore?

Grazie.

+5

Hai forse un'estensione di file come '.c', e non' .pl'? Cambia l'estensione e il rientro dovrebbe funzionare come previsto. – TLP

+7

Per seguire il commento di @ TLP, cosa mostra ': set filetype?' Mostra in quel buffer? Questo ti farà sapere se Vim pensa che sia un file Perl. –

+3

Si potrebbe innocuo sfuggire alla '' *:!.! '$ Discarica = qx cp /local/\*.txt' – mob

risposta

4

Si sta utilizzando cindent, che si intende specificamente per il codice C autoindent (inclusi i commenti di blocco in stile C). Questo non ha consapevolezza che stai effettivamente scrivendo perl. Prova a smartindent invece, sembra funzionare meglio con perl. Per provare questo, eseguire set cindent! e quindi set smartindent. Se funziona meglio, puoi cambiarlo nel tuo file .vimrc.

Se stai parlando della chiave = per il rientro, piuttosto che il rientro ident-as-you-go, questo è utilizza un formattatore separata. È possibile modificare l'impostazione utilizzata impostando equalprg. Perl, è possibile utilizzare set equalprg=perltidy\ -quiet per eseguire le righe selezionate tramite perltidy.

+0

Ciao, ho provato ma non sembra funzionare. Quando uso "=" per indentare, prende sempre/* come commento. Penso che questo sia un formato di commento in 3 parti e indipendente dal cindent? –

+0

@PanYan Non avevi detto che stavi usando '=' per indentare fino ad ora. Aggiornamento della mia risposta. – AKHolland

+0

tutti i tuoi commenti sono corretti. disabilitando il rientro fisso del cindent durante la digitazione e 'set equalprg = pertidy \ -quiet' ha funzionato per il tasto" = ". Molte grazie!! –

Problemi correlati