当有注释掉的大括号时,如何使用 vim 缩进行



我通常使用 vim re-缩进运算符 ('=') 以便根据语法缩进我的源代码。我也在整个文件上使用它,特别是如果我必须阅读其他人编写的源代码并且他们有不同的选项卡设置或类似的东西("gg=G"在那里真的很有帮助)。这只有在我有类似的东西时才有问题

(1) int main() {
(2)     for (int i=0; i<3; i++) {
(3)     //for (int i=0; i<4; i++) {
(4)         std::cout << i << std::endl;
(5)     }
(6) }

当我尝试缩进此代码时,我得到以下缩进级别:

(1) level 0 (which is good)
(2) level 1 (also)
(3) level 2 (could be 1, but I can live with that)
(4) level 2 (good)
(5) level 1 (good)
(6) level 1 (this is the problem)

因此,第 (5) 行中的右大括号与第 (3) 行中的左大括号相关联,后者被注释掉,因此不是语法的一部分。并且第 (6) 行中的右大括号与 (2) 中的左大括号配对,这是错误的。此问题也会影响代码的其余部分,因为此问题之后的函数不会与级别 0 对齐,而是从级别 1 开始。

如果光标位于第 (5) 行中的大括号上,则会突出显示 (2) 中正确的匹配大括号,但按"%"会跳转到第 (3) 行。这个问题在这里得到了解决,但假设的解决方案(一个名为matchit的插件)只修复了%而不是=。

有谁知道解决此问题的插件或黑客?

提前谢谢。

使用外部程序(如缩进)代替 vim 缩进:

  1. 安装缩进(例如,sudo apt-get install indent,在 Linux 上)
  2. 在 vim 上,设置 equalprg 变量:
:set equalprg=indent -kr -i8 -ts8 -sob -l80 -ss -bs 

相关内容

  • 没有找到相关文章

最新更新