Переместить текущее слово влево или вправо (другие слова «перепрыгнуть») - PullRequest
2 голосов
/ 09 марта 2011

Я бы хотел переместить слово под курсор и переместить его влево или вправо («перепрыгивая» другие слова).Например, если бы у нас было это предложение:

Быстрая лиса перепрыгивает через ленивую коричневую собаку.

Я хотел бы установить курсор на «коричневый», нажмите некоторую комбинацию клавиш и переместите еемежду "быстрым" и "лисой".Это было бы похоже на перемещение строк вверх и вниз ([e или] e), но слова должны идти влево или вправо.

Ответы [ 4 ]

4 голосов
/ 09 марта 2011

Переместить слово под курсором на одно слово вправо:

nmap <F10> dawelpb

Переместить слово под курсором на одно слово влево:

nmap <F9> dawbPb

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

Переместить вправо:

nmap <F10> dawElpB

Переместить влево:

nmap <F9> dawBPB

[Редактировать]: Добавлено объяснение:

Пояснение 'dawElpB': 'daw' удаляет слово под курсором, 'E' помещает курсор в конец слова справа от курсора, 'l' перемещает курсор на одну позицию вправо, 'p' вставляет слово и «B» помещают курсор в начало вставленного слова.

Пояснение 'dawBPB': 'daw' удаляет слово под курсором, 'B' помещает курсор в начало слова слева от курсора, 'P' вставляет слово, а 'B' помещает курсор в начало вставленного слова.

1 голос
/ 09 марта 2011

На вопрос vim.wikia действительно есть решение. Однако с годами я отошел от него, поскольку он меняет различные регистры, такие как @/, что влияет на выделенный шаблон поиска (когда установлен hlsearch).

Теперь я использую этот плагин .

1 голос
/ 09 марта 2011

У меня есть эти сопоставления в моем .vimrc:

" pushes current line up & down
nnoremap <leader><Up> ddkP
nnoremap <leader><Down> ddp

" pushes word under the cursor to the left & to the right
nnoremap <leader><Left> "_yiw?\w\+\_W\+\%#<CR>:s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/<CR><C-o><C-l>
nnoremap <leader><Right> "_yiw:s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/<CR><C-o>/\w\+\_W\+<CR><C-l>

Это намного сложнее, чем ответ @ Хаби - который я собираюсь попробовать - но он работает очень хорошо.

Я нашел это в Vim wiki.

1 голос
/ 09 марта 2011
daw5bhp

Пояснение:

галка: удалить вокруг слова (курсор может быть где угодно внутри "коричневого")

5b: вернуться на 5 слов

hp: переместите курсор влево на один пробел, затем вставьте

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