我正在为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
...
我的语法设置为higlighting,关键字和内置函数已经成为dal.vim文件的一部分。这是当前的dal.vim:
有没有办法改变我所拥有的代码,以便代码在IF / END块中自动缩进,同时保持所有注释在开头没有空格?
奖金问题:如何设置代码折叠以跟随那些IF / END块?现在我正在zf2j
折叠此代码。
答案 0 :(得分:2)
您必须编写缩进插件并将其放入indent
子目录中。
:h 'indentexpr'
,这是你的插件应该设置的。随意从vim分发的一百个缩进脚本中获取示例。我自己没有写过这样的插件,所以不能说哪一个最有用作为例子。
代码折叠结帐
:h :syn-fold
啊,不要在语法文件中设置缩进。这不是不可能的,但对于这种类型的工作来说,这不是正确的地方。