我正在为vim创建一个自定义语法文件,为了使代码更易于阅读,我想告诉vim如何自动缩进代码。现在,我通常在vim中重新缩进的gg=G''
摆脱了每一行开头的所有空白:
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
...
我已经设置了语法高亮显示,并且dal.vim文件中已经包含关键字和内置函数。这是当前的dal.vim:
http://pastebin.com/PEcSvqM9
有没有一种方法可以更改我的代码,以便代码在IF/END块内自动缩进,同时使所有注释开头没有空格?
额外的问题:如何设置代码折叠以跟随那些IF/END块?现在,我正在执行
zf2j
来折叠此代码。 最佳答案
您必须编写一个缩进插件并将其放入indent
子目录。有关更多信息,请参见
:h 'indentexpr'
,这就是您的插件应设置的内容。随意从一百个随vim分发的缩进脚本中获取示例。我不是一个人写这样的插件,所以不能说哪个插件最有用。
对于代码折叠 checkout
:h :syn-fold
啊,不要在语法文件中设置缩进。这不是不可能,但是对于这种工作来说,它并不是正确的地方。
关于vim - 创建自定义vim语法: Can I set custom auto-indent rules?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11747840/