2012-07-31 66 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 

啊,不要在语法文件中设置缩进。这不是不可能的,但对于这类工作来说这是不对的。