Визуальная замена блоков vim
Я хочу сделать отступ в комментариях в конце каждой строки следующего кода:
Point d_test = Point(5,-1); //inCircle > 0
Point e_test = Point(5,-1); //inCircle > 0
Point f_test = Point(5,-1); //inCircle > 0
Point g_test = Point(4,-5); //inCircle = 0
Point h_test = Point(3,-2); //inCircle < 0
Point i_test = Point(5,0); //inCircle < 0
Point j_test = Point(5,0); //inCircle < 0
Я пытаюсь использовать визуальный выбор блока, выбирая блок с комментариями. Затем я пытаюсь использовать подстановку следующим образом:: '<,'>s / \% V ^ \ s + \% V // g
Я сделал несколько попыток, но безуспешно:( . Могу поспорить, есть лучший способ сделать это.
Конечный результат, который я ищу:
Point d_test = Point(5,-1); //inCircle > 0
Point e_test = Point(5,-1); //inCircle > 0
Point f_test = Point(5,-1); //inCircle > 0
Point g_test = Point(4,-5); //inCircle = 0
Point h_test = Point(3,-2); //inCircle < 0
Point i_test = Point(5,0); //inCircle < 0
Point j_test = Point(5,0); //inCircle < 0
Спасибо.
2 ответа
К сожалению, выравнивание - это не то, что вы легко можете сделать с помощью простой команды замены, так как количество мест для вставки или удаления изменяется построчно.
Мне особенно нравится решать эту проблему с помощью vim-easy-align, где вы можете сделать отступ с помощью комментариев :EasyAlign /\/\// {'ig': []}
Редактировать: Easy Align игнорирует комментарии по умолчанию. Поэтому, чтобы выровнять комментарии, вы должны изменить ignore_groups
параметр. Обновлен ответ, чтобы отразить это.
Вы также можете достичь этого с помощью макроса.
Предполагая, что курсор находится в первой строке в обычном режиме, затем:
j
qa0f;10a [Esc]32|dwjq
5@a
Следует отформатировать все строки.
Этот макрос работает так:
qa
: запись макроса в буферa
0
: перейти к началу строкиf;
: Найти;
персонаж10a [Esc]
: вставить 10 пробелов, перейти в обычный режим32|
: переместить курсор в строку 32dw
: удалить текущее слово (лишние пробелы до следующего слова)jq
: перейти к следующей строке и завершить запись макроса5@a
: применить макрос, записанный в буфереa
пять раз
Надеюсь это поможет.