C ++构造函数初始化列表中的vim缩进

时间:2010-02-18 12:52:28

标签: c++ vim

#include<iostream>
using namespace std;
class Example
{
    public:
        Example(int a,int b,int c):m_a(a),m_b(b),m_c(c)
    {  // Wrong indentation here due to the colon in above line, { should be under E
        printf("\nThe 3 argument constructor invoked\n");
    } // Wrong indentation again
    private:
        int m_a;
        int m_b;
        int m_c;
};

大家好,

我在C ++的构造函数初始化列表中的gvim缩进中遇到了一些问题。 我在.gvimrc中使用了cindent,即使多次改变我的.gvimrc,我也无法解决这个问题。

一些仁慈的灵魂能否给我一些方法来设置它。我曾尝试改变cinoptions和cinwords,但没有任何帮助。

我在上面提供的代码段中突出显示了缩进问题。

感谢您的耐心

此致 拉利

4 个答案:

答案 0 :(得分:2)

:set cino=i0

答案 1 :(得分:1)

尝试:set smartindent,我必须先禁用cindent才能让它正常工作。

答案 2 :(得分:1)

我还阅读并重新阅读了

中的vim手册

http://vimdoc.sourceforge.net/htmldoc/indent.html#cinoptions-values

这是一个非常具有挑战性的问题。我能得到的最接近的是使用

:set cino=g3,h3,i0

也就是说,缩进范围声明(私有,公共等)由3,在范围声明后缩进3个空格,并且不进一步缩进构造函数。

导致了

#include
using namespace std;
class Example
{
   public:
      Example(int a,int b,int c):m_a(a),m_b(b),m_c(c)
      {  // Wrong indentation here due to the colon in above line, { should be under E
         printf("\nThe 3 argument constructor invoked\n");
      } // Wrong indentation again

     private:
  int m_a;
  int m_b;
  int m_c;

  };

这不是你想要的,但试验g,h,我可以非常接近。

如果这有帮助或者我引发了任何想法,请发表评论。也许错误报告是解决此问题的最佳方法。虽然一种解决方法是通过手动编辑来覆盖cindent,但这是不光彩的。

答案 3 :(得分:0)

我不知道这是否是一个选项,但您可以查看astyle。我们在工作时使用TextMate,并且(默认?)缩进方案不是我们想要的。但主要是按下输入后的前一行缩进。

我们使用的解决方案是简单地通过astyle(使用适当的选项)管理文件的完整源代码,并将其绑定到快捷键。这对于vim来说也是可能的。