在Vim中,如何避免将"/*"视为注释

Pan*_*Yan 8 vim perl comments indentation

Vim一直将我的perl代码视为注释,并且自动缩进不起作用.

$dump=`cp /local/*.txt .`;
if ($a == 0)
{
    if ($b == 0)
    {
        print "HELLO";
    }
}
Run Code Online (Sandbox Code Playgroud)

格式为:

$dump=`cp /local/*.txt .`;
                  if ($a == 0)
                  {
                  if ($b == 0)
                  {
                  print "HELLO";
                  }
                  }
Run Code Online (Sandbox Code Playgroud)

这是因为第一行中的"/*"被视为注释,因此Vim后来放弃了缩进.

我可以想到一个解决方法:

$dump=`cp /local/*.txt .`; #*/;
Run Code Online (Sandbox Code Playgroud)

手动关闭评论.

但有更好的方法吗?

谢谢.

AKH*_*and 4

您正在使用cindent,它专门用于自动缩进 C 代码(包括 C 样式块注释)。这并不知道您实际上正在编写 perl。尝试smartindent一下,似乎用 perl 效果更好。要尝试此操作,请运行set cindent!然后set smartindent. 如果这样效果更好,您可以在 .vimrc 文件中更改它。

如果您谈论的是=缩进的关键,而不是即用缩进,则这是使用单独的格式化程序。您可以通过设置更改使用的内容equalprg。对于 perl,您可以使用set equalprg=perltidy\ -quiet通过 来运行选定的行perltidy