簡體   English   中英

在Vim中縮進Javascript-函數中Lambda函數的問題

[英]Indenting Javascript in Vim - Problems with Lambda Functions in Functions

我在vim中使用javascript縮進有問題。 一切工作都很好,除了將內聯函數作為函數的參數縮進不起作用。 這是一個純JavaScript的問題(沒有涉及html)。

someFunc(function() {
    if(foo) {
        bar;
    } else {
        bar;
    }
});

縮進

someFunc(function() { 
        if(foo) { 
        bar; 
        } else { 
        bar; 
        } 
        });

你有同樣的問題嗎? 我該如何解決? 我嘗試了vim.org上的一些腳本,但是它們似乎也有同樣的問題。

模擬TextMates javascript縮進功能的腳本將是完美的。

您可能在JavaScript中使用“ cindent” 您可以嘗試使用“ smartindent”代替。

從文檔中, 'smartindent'作用是:

在開始新行時執行智能自動縮進。 適用於類似C的程序,但也可以用於其他語言。 'cindent'可以做這樣的事情,在大多數情況下效果更好,但更嚴格...

您可以通過以下方式切換到smartindent:

set nocindent smartindent

我已經對您的代碼進行了測試,並按您的預期進行縮進。

另請參見: 縮進源代碼-Vim提示Wiki

Vim內置的用於評估javascript縮進的表達式非常糟糕。 您可以通過安裝Better Javascript Indentation插件來修復它,或者如果您希望將插件安裝為git子模塊,則可以在github上獲取源代碼 安裝此插件將減輕痛苦。 每次在一行JavaScript的末尾按回車鍵時,都應使用正確的縮進級別定位光標。 另外,您還可以使用=命令自動縮進您的javascript。 安裝該插件-您會想知道沒有它會怎樣。

我相信這個問題的答案是從您的.vimrc中刪除所有cindent / smartindent / autoindent並改用文件類型的縮進(“ set no *”行不是必需的,只不過是書呆子)。

set nocindent
set nosmartindent
set noautoindent
filetype indent on

我遇到了同樣的問題,這就是使vim表現出來的原因。 當將它們輸入HTML樣式標簽時,這也阻止了vim在冒號(:)上“不縮進” CSS規則,這是我的另一項煩惱。

如果您打開/保存帶有* .js擴展名的文件,vim應該設置正確的縮進規則,但是如果您開始編輯新的(未保存)文件,則可能需要顯式設置“:set filetype = javascript”。

vim的縮進並不可怕,只是被誤解了。 對於使用它的許多程序員,很難相信默認的縮進規則確實如此糟糕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM