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

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

Как удалить первое слово каждой строки в Vim?

Как насчет шаблона в каждой строке?

4b9b3361

Ответ 1

Я бы использовал что-то вроде следующего:

:%s/^\w+\s+//

Регулярное выражение будет соответствовать одному или нескольким символам слова, начинающимся в начале строки, за которыми следует по крайней мере один символ пробела. Он удалит слово и любые последующие пробелы. Если строка может содержать только одно слово - и вы все еще хотите его удалить, вы можете использовать чередование для соответствия пробелу или концу строки.

:%s/^\w+(\s+|$)//

Ответ 2

Перейдем к загадочному здесь, в истинном стиле vi:

[email protected]

Рэнди исправил это в комментариях для работы над более чем 100 000 строк:

[email protected]@q

Для тех, кто начинается с Vim, это разбивается на:

gg    - Go to first line
qq    - Record a macro into register 'q'
[email protected] - The macro:
            dw - delete word at cursor
            j  - go down one line
            @q - run the macro in register 'q'
q     - Stop recording the macro
@q    - Execute the macro in register 'q'

По сути, макрос рекурсивный - он удаляет слово, перемещается по строке, а затем снова вызывает себя, повторяя для каждой строки до конца файла. Окончательный "@q" - это начальный (ручной) вызов, необходимый для отключения макроса в каждой строке.

Ответ 3

: нормальный для спасения:

:%norm dw

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

От: help:

: norm [al] [!] {команды}

Выполнить команды {команды} в нормальном режиме.

Это позволяет выполнять команды Нормального режима, введенные на командная строка. {commands} выполняется, как и набирается.

Ответ 4

Как насчет этого? :%! cut -s -d '' -f2 -

Ответ 5

Первое слово (где слово определено как пробелы)

:%s/^\s*[^ ]* //g

Удалить шаблон:

:%s/< insert pattern here >//g

Ответ 6

:%s,^[^ ]*,,

В начале строки сопоставляются что угодно, но не пробел и не заменяются ничем.