Как мне достичь этого с помощью vim cindent?

#c #vim #indentation

#c #vim #отступ

Вопрос:

Если я сейчас напишу следующий код в vim

 const SomeType amp; some_function (<ENTER>
  

затем vim продолжит следующую строку с отступом в две вкладки. Я хочу, чтобы в следующей строке был отступ только с одной табуляцией.

Я знаю, что cindent существует, но я не могу понять, какой синтаксис позволит это сделать.

Ответ №1:

:help cinoptions-values

 (N    When in unclosed parentheses, indent N characters from the line
      with the unclosed parentheses.  Add a 'shiftwidth' for every
      unclosed parentheses.  When N is 0 or the unclosed parentheses
      is the first non-white character in its line, line up with the
      next non-white character after the unclosed parentheses.
      (default 'shiftwidth' * 2).

        cino=                     cino=(0 >
          if (c1 amp;amp; (c2 ||          if (c1 amp;amp; (c2 ||
                      c3))                     c3))
              foo;                      foo;
          if (c1 amp;amp;                 if (c1 amp;amp;
                  (c2 || c3))           (c2 || c3))
             {                         {
  

Комментарии:

1. Спасибо, что нашли соответствующий документ, но я СОВСЕМ его не понимаю! Мне кажется, что примеры имеют случайный отступ, я никак не могу сопоставить это со cino строкой:-(

2. Кроме того, как это меняется, когда вкладки раскрываются / не раскрываются?

3. Вы в основном хотите перейти (1 к cinoptions.

4. Да, просто введите :set cinoptions=(1 и попробуйте, возможно, поиграйте с разными значениями, пока не получите правильный результат. Если это поможет, у меня есть cinoptions=g0,:0,(0,w1,Ws который выравнивает по левому краю объявления области видимости класса и операторы case в их соответствующих блоках, выравнивает строки выполнения с открывающими скобками (как в примере с правым столбцом выше) и т.д.