vim: удалить первые 2 пробела для нескольких строк - PullRequest
75 голосов
/ 05 августа 2011

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

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

Ответы [ 7 ]

105 голосов
/ 05 августа 2011
  1. Войдите в режим визуального блока с помощью Ctrl-V (или Ctrl-Q, если вы используете Ctrl-V для вставки);
  2. Выберите область для удаления с помощью стрелок;
  3. Затем нажмите d, чтобы удалить выбранную область.
88 голосов
/ 06 августа 2011

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

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

:%normal 2x

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

:%s/^  /

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

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

:%normal <<
13 голосов
/ 05 августа 2011

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

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

%s/^.\{2}//

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

%s/^\s\{2}//
7 голосов
/ 06 августа 2011

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

:%<
4 голосов
/ 05 августа 2011

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

:[range]s/^  //

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

:[range]s/^..//

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

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

:set shiftwidth=2
3 голосов
/ 09 августа 2011

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

3 голосов
/ 07 августа 2011

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

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