Как перевернуть строки визуального выделения в vim? - PullRequest
16 голосов
/ 06 апреля 2011

Я хочу взять визуальный выбор и перевернуть его так, чтобы первая строка выбора была внизу. От:

<other_stuff>
The
wheels
go
round.
<more_stuff>

Визуальный выберите Sentnce и затем переверните:

<other_stuff>
round.
go
wheels
The
<more_stuff>

Любая идея, как это сделать просто. Я бы предпочел не устанавливать плагин для этого.

Ответы [ 4 ]

26 голосов
/ 06 апреля 2011

Когда вы делаете визуальный выбор, Vim автоматически делает закладки '< и '> в начале и конце блока соответственно, так что вы можете делать то, что вы хотите, несколькими способами.

В обычном режиме: '>dd'<P

В качестве команды ex: :'>d | '<-1 put

NB. Закладки остаются после выхода из визуального режима, поэтому вам не нужно оставаться в визуальном режиме, чтобы использовать их.

редактировать

Упс, я неправильно прочитал вопрос и подумал, что вы хотите, чтобы в начале была только последняя строка, но вы хотите, чтобы весь блок перевернулся. Самое простое решение, если вы работаете в Unix-системе:

:'<,'>!tac

Это передает линии через программу unix 'reverse cat'.

4 голосов
/ 06 апреля 2011

Согласно :help 12.4 вы можете пометить первую строку с помощью mt, перейти к последней строке, которую вы хотите перевернуть, затем использовать команду :'t+1,.g/^/m 't

3 голосов
/ 13 июня 2016

Для тех, кому удобнее с Визуальный режим :
1. Определите номер строки над выбором, который вы хотите перевернуть, используя :set nu.
2. Используйте Shift-V, чтобы выделить выбор, который вы хотите перевернуть (визуальный режим).
3. :g/^/m <Line number from step 1>.

Обратите внимание, что в визуальном режиме он будет автоматически отображаться как :'<,'>g/^/m <Line number> при вводе команды из 3.

Эта команда работает, перемещая выделение по одной строке за раз в номер строки, который вы ей даете. Когда второй элемент помещается в заданный номер строки, он толкает первый вниз к номеру строки + 1. Затем третий толкает первый и второй вниз и так далее, пока весь список не будет помещен в один номер строки, что приводит к список в обратном порядке.

2 голосов
/ 02 июля 2018

В дополнение к ответу Дэйва Кирби и обращаясь к требованию «как сделать это просто», вы можете создать ярлык в вашем файле .vimrc.В следующем примере сопоставление клавиши F5 с этим сочетанием клавиш:

map <F5> :'<,'>!tail -r<CR>

или для OS X:

map <F5> :'<,'>!tac<CR>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...