2012-07-31 79 views
7

我爲vim創建了一個自定義語法文件,爲了使代碼更易於閱讀,我想告訴vim如何自動縮進代碼。現在,我平時再縮進gg=G''在VIM只是獲取每一行開頭擺脫所有的空白:創建自定義vim語法:我可以設置自定義自動縮進規則嗎?

IF (@("X_17") = "X") THEN 
*Make sure only one is selected 
countX = 0; 
IF (@("X_19") = "X") THEN 
countX += 1; 
END 
IF (@("X_20") = "X") THEN 
countX += 1; 
END 
IF (@("X_21") = "X") THEN 
countX += 1; 
END 
... 

我想設置它,這樣的註釋(開頭*)不縮進根本沒有(在行的開頭沒有空格),但其餘的都是基於IF和END縮進的。相同的代碼,正確地縮進(假設即使在第一IF是一個更大的IF/END塊內):

IF (@("X_17") = "X") THEN 
*Make sure only one is selected 
     countX = 0; 
     IF (@("X_19") = "X") THEN 
      countX += 1; 
     END 
     IF (@("X_20") = "X") THEN 
      countX += 1; 
     END 
     IF (@("X_21") = "X") THEN 
      countX += 1; 
     END 
     ... 

我有higlighting設置語法,以及關鍵字和內置函數一個DAL的已經部分.vim文件。這是當前dal.vim:

http://pastebin.com/PEcSvqM9

有沒有辦法改變什麼,我有這樣的代碼會自動縮進IF/END塊內,同時保持所有的意見,沒有空格開頭?

獎金問題:我如何設置代碼摺疊以跟隨那些IF/END塊?現在我正在做zf2j摺疊此代碼。

+1

縮進評論是一個非常奇怪的選擇。我不會喜歡它,因爲它會破壞代碼閱讀,當然,除非我沒有其他變體。 – ZyX 2012-07-31 20:13:31

+1

我完全同意,但這不是我的選擇。達爾腳本抱怨如果註釋縮進。 – maccam912 2012-08-01 12:48:05

回答

2

您必須編寫縮進插件並將其放入indent子目錄中。更多解釋如下

:h 'indentexpr' 

,這是你的插件應該設置的。隨意從vim發佈的數百個縮進腳本中獲得例子。我沒有自己編寫這樣的插件,所以不能說哪一個最有用。

對於代碼摺疊退房

:h :syn-fold 

啊,不要在語法文件中設置縮進。這不是不可能的,但對於這類工作來說這是不對的。