Удалить / переместить / восстановить несколько разделов 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
Другие вопросы по тегам