自訂VIM的 `gg=G` 格式化代碼

來源:互聯網
上載者:User
VIM有個 gg=G 格式化代碼指令。
如何自訂這個自訂規則呢?

回複內容:

VIM有個 gg=G 格式化代碼指令。
如何自訂這個自訂規則呢?

這個問題有點大,全說清楚不太現實,說一些基本概念以供參考:

首先對於你想知道的事情,gg=G 裡只有 = 才是關鍵,剩下的只是協助 = 確定作用
範圍而已。

= 的工作機制是這樣的:

  1. 首先它尋找使用者指定的外部縮排工具,若有則使用該工具對目標範圍進行縮排操作。用
    於指定外部縮排工具的選項是 equalprg,你應該看一下關於它的文檔,另外
    vimcasts 有一期視頻示範了一個執行個體,在該執行個體中 Drew Neil 示範了如何使用 Par 來
    格式化純文字,之後還有一個執行個體示範了用 pandoc 來格式化 HTML。儘管這兩個例子裡
    使用的是 formatprgformatexpr 參數(對應的是 gq 而不是 =,即格式化
    而不是縮排),但原理和用法卻是相通的。
  2. 然而 equalprg 預設值是空,如果你沒有合適的外部縮排工具,Vim 就會使用內建的
    縮排功能 C-indenting'lisp',這兩個的文檔你也最好看一看。此外若你使用
    的 Vim 編譯時間未包含內建縮排功能的話,就會用內建的 indent() 函數來幹活兒——
    這是最後的手段了,文檔也值得一看(你自己寫縮排指令碼時可以用到)。
  3. 還有一個重要的設定是 indentexpr。剛才說過若 equalprg 未設定,= 會使用
    C-indenting'lisp' 的功能,但如果此時設定了 indentexpr 的話,則會取
    代前面二者以及其他所有的內建縮排運算式(indent-expression)。

如果你對 equalprgindentexpr 傻傻分不清楚,很簡單:前者隻影響 = 的效果
而後者決定所有的縮排功能,比如說我們除了可以使用 = 調整縮排之外,在 INPUT
式下換行 Vim 也會自動調整縮排。所以 indentexpr 的影響範圍更大,也是用來自訂
縮排規則的主要手段(同時還有一個 indentkeys 也很有用,這倆的文檔更要好好看)。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.