我正在为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/

10-11 23:11
查看更多