Как добавить вырезанный текст в буфер обмена/обмена nano/vi вместо замены того, что там есть?

Как добавить вырезанный текст в буфер обмена/обмена nano/vi вместо замены того, что там есть?

В настоящее время я реорганизовываю список зеркал ArchLinux pacman, чтобы поместить все серверы США наверх, но это происходит крайне медленно. Для каждого сервера я прокручиваю список вниз до следующего сервера США, вырезаю его, возвращаюсь наверх, вставляю его и так далее.

Мне кажется, что должен быть какой-то способ начать снизу и поместить все увиденные мной серверы США в накопительный буфер, а затем вставить их все сразу в начало файла.

Я знаю, что Nano позволяет использовать команду «Вырезать» несколько раз, чтобы добавлять несколько раз в буфер вырезания, но это работает только для строк, которые находятся непосредственно рядом друг с другом.

решение1

В Vim вы можете использовать:globalк:moveвсе совпадающие строки вверху:

:global/United States/move 0

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


Другой подход, который больше соответствует тому, о чем вы спрашиваете, — это сокращение линий доименованный регистр(:help quote_alpha). Варианты с заглавными буквами добавляют и, следовательно, накапливают удаления:

:let @a = "" | global/United States/delete A

Затем вы можете вставить регистр вверху (на этот раз в исходном порядке):

:0put a

Связанный контент