簡體   English   中英

vim的自定義“ smartindent”腳本

[英]custom 'smartindent' script for vim

我目前陷入一個新項目,其中縮進樣式有點特殊。 基本規則是使用“關鍵字+空白”空格來縮進下一行。

例如:

if () {
   // indent 3 spaces here
}

while () {
      // indent 6 spaces here
}

有一些(或很多)例外:

  • 否則,如果:與(3)一樣使用相同數量的空格
  • 開關/箱(2個空格)中的箱子
  • ...

1)已經有可用的插件可以幫我嗎? 根據一位開發人員的說法,這被稱為“智能識別”。 不幸的是,VIM的smartindent做一些不同的事情。

2)如果答案為1。 有沒有一種簡單的方法可以配置vim以遵守這些規則?

我不知道有任何這樣的插件,恕我直言,這種方案不是很聰明

但是,完全有可能編寫一個自定義的縮進插件來實現您的確切要求。 參見:help 'indentexpr' ; 此外,Vim附帶$VIMRUNTIME/indent/*.vim幾個縮進插件,可以作為靈感。

基本上,算法是這樣的:

  • 檢查的關鍵詞之一(前行ifwhile ,等)。
  • 如果存在匹配項,則計算偏移量並將其添加到上一行的縮進( indent(v:lnum - 1) );中。 否則,按原樣使用上一行的縮進。
  • 如果該行包含} ,請找到匹配{的行,並使用該行的縮進。

暫無
暫無

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

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