Удалить / переместить / восстановить несколько разделов vim
Я знаю, что вы можете удалить, скажем, строки 34-40 с:34,40d
но есть ли способ удалить, скажем, строки 34-40 и строки 43-45
что-то вроде:34,40(?)43,45d
где (?) представляет символ, необходимый для сообщения vim и второго набора строк?
Спасибо
2 ответа
Там нет полезного встроенного способа делать именно то, что вы хотите.
Но это достаточно простое ИМО:
:34,40d|43-45d
Есть еще один способ посмотреть на это. Если эти строки разделяют pattern
Вы могли бы сделать:
:g/pattern/d
Самый короткий путь - это просто дублирование :d[elete]
команда и объединение всех команд в одной командной строке. Для изменяемых команд (например, :delete
), вам нужно начинать с конца, чтобы номера строк оставались действительными:
:43,45d|34,40d
С плагином
Плагин My PatternsOnText предоставляет (среди многих других) :RangeDo
Команда, которая упрощает обработку, поскольку она адаптирует диапазоны для мутаций и гарантирует, что каждая строка обрабатывается только один раз:
:RangeDo 34,40 43,45 d
Yanks
С или без плагина, каждый отдельный диапазон все еще приводит к отдельному вызову команды. Чтобы накапливать янки в одном регистре, вы должны использовать заглавную версию, которая добавляется (для всех, кроме первого вызова):
:34,40yank a | 43,45yank A
:let @a = '' | RangeDo 34,40 43,45 yank A