отступ vim в списке инициализации конструктора C ++ - PullRequest
9 голосов
/ 18 февраля 2010
#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;
};

Привет всем,

У меня есть небольшая проблема с отступом gvim в списке инициализации конструктора в C ++.Я использую cindent в .gvimrc, и я не могу решить эту проблему, даже после того, как несколько раз изменил свой .gvimrc.

Может ли какая-то доброжелательная душа дать мне какой-то способ настроить это.Я попытался изменить cinoptions и cinwords, но ничего не помогло.

Я выделил проблему с отступом в приведенном выше фрагменте кода.

Спасибо за ваше терпение

С уважениемЛали

Ответы [ 4 ]

2 голосов
/ 05 марта 2010
:set cino=i0
1 голос
/ 04 марта 2010

Я также прочитал и перечитал руководство 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</p>

<pre><code>     private:
  int m_a;
  int m_b;
  int m_c;

  };

Это не совсем то, что вы хотели, но экспериментируя с g, h, я могу подойти довольно близко.

Пожалуйста, прокомментируйте, если это поможет, или если у меня возникли какие-либо идеи. Возможно, сообщение об ошибке - лучший способ решить эту проблему. Хотя обходной путь - переопределить cindent путем ручного редактирования, столь же бесславного, как это.

1 голос
/ 18 февраля 2010

Попробуйте :set smartindent, мне сначала пришлось отключить cindent, чтобы он заработал.

0 голосов
/ 04 марта 2010

Я не знаю, если это вариант, но вы могли бы взглянуть на astyle . Мы используем TextMate на работе, и схема отступов (по умолчанию?) - это не то, что мы хотим иногда. Но в основном это следует за отступом предыдущей строки после нажатия клавиши ввода или чего-то еще.

Решение, которое мы используем, заключается в простой передаче полного источника файла через astyle (используя соответствующие параметры), и это связано с сочетанием клавиш. Это возможно также с vim.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...