Как удалить первое слово каждой строки в Vim?
Как насчет шаблона в каждой строке?
Как удалить первое слово каждой строки в Vim?
Как насчет шаблона в каждой строке?
Я бы использовал что-то вроде следующего:
:%s/^\w+\s+//
Регулярное выражение будет соответствовать одному или нескольким символам слова, начинающимся в начале строки, за которыми следует по крайней мере один символ пробела. Он удалит слово и любые последующие пробелы. Если строка может содержать только одно слово - и вы все еще хотите его удалить, вы можете использовать чередование для соответствия пробелу или концу строки.
:%s/^\w+(\s+|$)//
Перейдем к загадочному здесь, в истинном стиле 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" - это начальный (ручной) вызов, необходимый для отключения макроса в каждой строке.
: нормальный для спасения:
:%norm dw
Он в основном повторяет аргументы, как если бы вы вводили их в обычном режиме (не редактирование).
От: help:
: norm [al] [!] {команды}
Выполнить команды {команды} в нормальном режиме.
Это позволяет выполнять команды Нормального режима, введенные на командная строка. {commands} выполняется, как и набирается.
Как насчет этого? :%! cut -s -d '' -f2 -
Первое слово (где слово определено как пробелы)
:%s/^\s*[^ ]* //g
Удалить шаблон:
:%s/< insert pattern here >//g
:%s,^[^ ]*,,
В начале строки сопоставляются что угодно, но не пробел и не заменяются ничем.