Как перевернуть линии визуального выделения в vim?
Я хочу сделать визуальный выбор и перевернуть его так, чтобы первая строка выбора была внизу. From:
<other_stuff>
The
wheels
go
round.
<more_stuff>
Визуальный выберите отправку, а затем переверните:
<other_stuff>
round.
go
wheels
The
<more_stuff>
Любая идея, как это сделать просто. Я бы предпочел не устанавливать плагин для этого.
Ответы
Ответ 1
Когда вы делаете визуальный выбор, Vim автоматически делает закладки '<
и '>
в начале и конце блока соответственно, поэтому вы можете делать то, что хотите, несколькими способами.
В нормальном режиме: '>dd'<P
Как команда ex: :'>d | '<-1 put
NB закладки остаются после выхода из визуального режима, поэтому вам не нужно оставаться в визуальном режиме, чтобы использовать их.
изменить
Упс, я неправильно понял вопрос и думал, что вам нужна только последняя строка, поставленная в начале, но вы хотите, чтобы весь блок изменился на противоположный. Простейшее решение, если вы находитесь в системе unix:
:'<,'>!tac
Он прокладывает линии через программу unix "обратная кошка".
Ответ 2
В соответствии с :help 12.4
вы можете пометить первую строку с помощью mt
, перейти к последней строке, которую хотите изменить, а затем использовать команду :'t+1,.g/^/m 't
Ответ 3
Для тех, кому удобнее Визуальный режим:
1. Определите номер строки над выбором, который вы хотите перевернуть, используя :set nu
.
2. Используйте Shift-V
, чтобы выделить выделение, которое вы хотите перевернуть (визуальный режим).
3. :g/^/m <Line number from step 1>
.
Обратите внимание, что в визуальном режиме он будет автоматически отображаться как :'<,'>g/^/m <Line number>
, когда вы вводите команду из 3.
Эта команда работает, перемещая выделение по одной строке за раз в номер строки, который вы ему даете. Когда второй элемент вводится в указанный номер строки, он подталкивает первый до номера строки + 1. Затем третий подталкивает первый и второй вниз и так далее, пока весь список не будет вдавлен в однострочное число, в результате чего обратный упорядоченный список.