9

我正在为 vim 创建一个自定义语法文件,为了使代码更易于阅读,我想告诉 vim 如何自动缩进代码。现在,我gg=G''在 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
        ...

我已经设置了语法高亮,关键字和内置函数已经是 dal.vim 文件的一部分。这是当前的 dal.vim:

http://pastebin.com/PEcSvqM9

有没有办法改变我所拥有的,以便代码在 IF/END 块内自动缩进,同时保持所有注释的开头没有空格?

额外问题:如何设置代码折叠以遵循这些 IF/END 块?现在我正在zf2j折叠这段代码。

4

1 回答 1

5

您必须编写一个缩进插件并将其放入indent子目录中。更多内容在

:h 'indentexpr'

,这是你的插件应该设置的。随意从与 vim 一起分发的一百个缩进脚本中获取示例。我没有自己写这样的插件,所以不能说哪个作为例子最有用。

对于代码折叠检查

:h :syn-fold

啊,不要在语法文件中设置缩进。这不是不可能的,但它只是不适合这种类型的工作。

于 2012-07-31T20:06:13.393 回答