Как я могу отложить блок кода C в Vim?

Duplicate:

Как отступать код в редакторе vim в Windows?

Вкладка выделенного раздела в VIM

Иногда я хочу отложить блок кода C в Vim. Я, как правило, контактировал с ним по строкам.

Что лучше/быстрее?

Ответы

Ответ 1

Я удивлен, что никто еще не придумал =%.
Убедитесь, что у вас есть :set cindent,
Поместите себя на один из {} вашего блока и просто нажмите:

=%

Весь код в этом блоке будет правильно отпечатан.

Ответ 2

Войдите в визуальный режим, выберите следующую согласующую скобку, отступ:

V
%
>

Ответ 3

Используйте ' > ' для закладки блока

Ответ 4

Вставка: C-d, C-t
Пока визуально: > , <
В то время как нормальная: → , < <

В любом из этих режимов используйте '.' отступать дальше.

Ответ 5

Try

: set cindent

Включение виртуальной магии в vim. Таким образом, как только вы откроете скобу, она будет автоматически вставлена, пока вы не закроете скобу.

Ответ 6

Если у вас есть незашифрованный код, который выглядит так:

if (foo)
{
/* line 1 */
/* line 2 */
/* line 3 */
}

... поместите курсор на строку "1" в командном режиме и введите 3==, где 3 - количество строк в отступ.

Ответ 7

Я думаю, что это будет сделано без каких-либо отступных переключателей.

:startRange,stopRange s/^/^\t/g

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

unindent с:

:startRange,stopRange s/^\t/^/g

Ответ 8

В дополнение к тому, что сказал skinp, если у вас есть:

   int foo()
   {
   /* line 1 */
       /* line 2 */
       /* line 3 */
       /* line 4 */
   }

и по какой-либо причине желайте, чтобы это выглядело так (то есть вы хотите, чтобы все отступы 4 пробела * были там, где они были ранее, вместо того, чтобы отступать "правильно" в соответствии с правилами исключения):

   int foo()
   {
       /* line 1 */
           /* line 2 */
           /* line 3 */
           /* line 4 */
   }

в любом месте блока, do viB > (visualselection innerBlock indent) **

* или независимо от того, какая ваша ширина сдвига установлена ​​на

** vi} совпадает с viB и может быть легче запомнить, поскольку vi} выбирает внутри {}, vi) выбирает внутри(), vi] выбирает внутри [], а vi > выбирает внутри < > .

Кроме того, va}, va) и т.д. выберите {},() и т.д. в дополнение к тому, что содержится в блоке.