2013-10-14 31 views
8

Vim始終將我的Perl代碼視爲註釋,並且自動縮進不起作用。在Vim中,如何避免將「/ *」視爲註釋

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

被格式化爲:

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

這是因爲「/ *」的第一行被視爲註釋,因此Vim給出了事後縮進什麼。

我能想到的一種解決方法爲:

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

要手動關閉了評論。

但是有沒有更好的方法?

謝謝。

+5

你可能有文件擴展名,如'.c',而不是'.pl'?更改擴展名,縮進應按預期工作。 – TLP

+7

要追蹤@ TLP的評論,那麼':set filetype?'在該緩衝區中顯示的是什麼?這會讓你知道Vim是否認爲它是一個Perl文件。 –

+3

您可以無害地轉義'*':'$ dump = qx!cp /local/\*.txt。!' – mob

回答

4

您正在使用cindent,這是專門用於自動登錄C代碼(包括C風格塊註釋)的。這沒有意識到你實際上是在寫perl。相反,嘗試smartindent,它似乎與perl更好地工作。要嘗試此操作,請運行set cindent!,然後運行set smartindent。如果這個效果更好,你可以在你的.vimrc文件中改變它。

如果您正在討論的是縮進的關鍵,而不是「即時識別」縮進,則這是使用單獨的格式化程序。您可以通過設置equalprg來更改使用的內容。對於perl,您可以使用set equalprg=perltidy\ -quiet來運行通過perltidy的選定行。

+0

嗨,我嘗試,但它似乎並沒有工作。當我使用「=」縮進時,它總是以/ *作爲註釋。我認爲這是vim 3-piece評論格式,並且獨立於cindent? –

+0

@PanYan你剛纔沒有提到你正在使用'='來縮進。更新我的答案。 – AKHolland

+0

你的所有評論都是正確的。鍵入時禁用cindent固定縮進,並設置「= equalpag = pertidy \ -quiet」用於「=」鍵。非常感謝!! –