Подтвердить что ты не робот

Vim: удалить первые 2 пробела для нескольких строк

Какой самый простой способ удалить первые 2 пробела для каждой строки с помощью VIM? В основном это повторяется "2x" для каждой строки.

Уточнение: здесь предположение - это первые 2 символа, это пробелы. Поэтому вопрос заключается в том, чтобы делать отступы для нескольких строк.

4b9b3361

Ответ 1

Еще несколько вариантов. Вы можете решить, какой из них "самый простой способ".

Удалите первые 2 символа каждой строки:

:%normal 2x

Удалите первые 2 символа каждой строки, только если они являются пробелами:

:%s/^  /

Обратите внимание, что последняя косая черта является необязательной и только здесь, чтобы вы могли видеть два пробела. Без косой черты всего 7 символов, включая :.

Переместить отступ влево для каждой строки:

:%normal <<

Ответ 2

  • Введите режим визуального блока с помощью Ctrl-V (или Ctrl-Q, если вы используете Ctrl-V для вставки);
  • Выберите область для удаления со стрелками;
  • Затем нажмите d, чтобы удалить выбранную область.

Ответ 3

Вы также можете использовать поиск и замену (в редакторе ex, доступ через символ :):

Удалите первые два символа независимо от того, что:

%s/^.\{2}//

Удалите первые два символа пробела (должно быть в начале и оба должны быть пробелами... любая строка, не соответствующая этим критериям, будет пропущена):

%s/^\s\{2}//

Ответ 4

Предполагая a shiftwidth=2, затем используя сдвиг с диапазоном %

:%<

Ответ 5

Два пробела или два символа? (2x делает последнее.)

:[range]s/^  //

удаляет две пробелы в начале каждой строки; используйте % (эквивалентно 1,$) как [range] сделать это для всего файла.

:[range]s/^..//

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

Если то, что вы действительно делаете, это изменение отступа, вы можете использовать команду < для ее уменьшения или команду >, чтобы увеличить ее. Установите shiftwidth для управления тем, насколько он сдвиг, например

:set shiftwidth=2

Ответ 6

Я бы попробовал один из двух подходов:

  • Редактирование столбцов в блоке для удаления с помощью Ctrl+V (часто отображается на Ctrl+Q).
  • Запишите макрос в первой строке, используя q1 (или любой другой номер/букву, которую вы хотите обозначить регистрацией записи), затем повторите этот макрос несколько раз, используя @1 (чтобы использовать мой предыдущий пример. используйте предыдущее число, чтобы рассказать ему, сколько раз запускать - [email protected] для запуска этого макроса 10 раз, например. Однако, это зависит от того, что вы записали, - обязательно перемотайте курсор 0 или оставьте одну строку j, если это релевантно.

Ответ 7

Я бы также добавил: узнайте, как настроить отступ для vim. Тогда простой gg=G выполнит трюк.