Как сопоставить десятичную букву и пробел в vim? - PullRequest
3 голосов
/ 21 сентября 2009

Мне нужно изменить

1  A
2  B
3  C
4  D

до

A
B
C
D

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

Я знаком с Reqex только в Perl, поэтому я пытаюсь использовать:% s / ^ \ d \ s + // для решения моей проблемы, но он не работает. так кто-нибудь из вас может сказать мне, как выполнить работу, используя vim?

спасибо.

Ответы [ 8 ]

8 голосов
/ 21 сентября 2009

Vim нужен обратный слеш для +, поэтому попробуйте

:%s/^\d\s\+//

3 голосов
/ 21 сентября 2009

Один из способов - использовать глобальную команду с командой поиска и замены:

:g/^[0-9]  */s//

Ищет последовательность:

  • начало строки ^
  • цифра [0-9]
  • пробел <space>
  • ноль или более пробелов <space>*

и затем заменяет его ничем (s//).

Несмотря на то, что вы можете сделать аналогичную вещь только с помощью одной команды search-and-replace, полезно изучить глобальную команду, так как вы можете делать всякие замечательные вещи с выбранными строками (не только поиск и замена) .

2 голосов
/ 21 сентября 2009

Используйте следующее

:%s/^[0-9]  *//
1 голос
/ 21 сентября 2009

Если вы все еще хотите использовать Perl для этого, вы можете:

:%!perl -pe 's/^\d\s+//'

Vim запишет файл во временный файл, запустит на нем заданный скрипт Perl и перезагрузит файл в буфер редактирования.

1 голос
/ 21 сентября 2009

Вы также можете использовать режим визуального блока (Ctrl + V), затем двигаться вниз и вправо, чтобы выделить блок символов, и использовать «x», чтобы удалить их. В зависимости от расположения линии, это может быть быстрее (и легче запомнить).

1 голос
/ 21 сентября 2009

Вы должны использовать вместо

:%s/^\d\s\+//

Будучи текстовым редактором, vim склонен обрабатывать больше букв буквально 100 как текст ‒ при сопоставлении с шаблоном, чем с perl. В режиме по умолчанию + соответствует буквальному +.

Конечно, это настраивается. Попробуйте

:%s/\v^\d\s+//

и прочитайте файл справки.

:help magic
0 голосов
/ 21 сентября 2009

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

esc ctrl+q

тогда вы можете выделить то, что вы хотите удалить

0 голосов
/ 21 сентября 2009

Избегайте знака плюс:

:%s/^\d\s\+//
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...