Как мне сделать отступ для блока кода в vim? - PullRequest
8 голосов
/ 29 сентября 2010

Есть удивительно число из вопросов по этому предмету , но кое-как ни один из них ответь что я хочу.

У меня есть блок кода следующим образом:

void foo {

somecodehere
morecode
...

}

Как видите, внутренности моей функции имеют отступы на том же уровне, что и остальная часть моего блока кода. В настоящее время я делаю >% в конце моего блока (то есть }), который делает отступ для всего блока, включая строки с моими фигурными скобками.

То, что я хотел бы сделать, - это подобная команда, которая вставляет каждую строку между , исключая мои фигурные скобки.

Я не могу начать говорить, сколько времени это спасет меня.

Ответы [ 4 ]

13 голосов
/ 29 сентября 2010

Вместо того, чтобы отображать что-то новое, >i{, кажется, делает то, что вам нужно, но перемещает курсор.

3 голосов
/ 29 сентября 2010

Поместите курсор внутри блока, для которого вы хотите сделать отступ, и введите vi{>

v, чтобы войти в визуальный режим.

i{ выделяет все внутри самого внутреннего блока {}

> отступает визуальный блок и возвращается в нормальный режим

Затем вы можете использовать '', чтобы переместить курсор обратно к исходной строке.

NB, если вытакже нужно добавить отступы, а затем заменить i{ на a{.

1 голос
/ 29 сентября 2010

Я использую метки, которые иногда могут быть болезненными, но это работает.
Перейти к последней строке вашей функции (строка над символом})
ma Создать метку 'a'
Вернуться назадк вершине функции и сделайте это.

> `a

Это просто говорит отступ на один уровень, пока не достигнет отметки a.

1 голос
/ 29 сентября 2010

вставка

map sb v%><<%<<

в ваш .vimrc (замените 'sb' на любую нужную комбинацию клавиш) он сдвигает всю функцию вправо, а затем первый и последний линия назад налево. Работает в первой или последней строке блока

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