Их тип печатания я много делаю:

Когда я везде на слово, я люблю копировать его, поэтому у меня есть простой

:nmap <Leader>y yiw

А потом я собираюсь другое слово (везде на нем), чтобы заменить на те, дернул, так что я пишу

:nnoremap cp "_diwP

(ср для очистки и вставки)

пример :

предыдущее дернуло слово: "привет"

Это работает отлично, если я делаю cp на "бар" (он заменяет предыдущий дернул)

lorem ipsum bar foo
> lorem ipsum hello foo

но когда слово находится в конце строки (например, с 'foo'), оно дает

lorem ipsum bar foo
> lorem ipsum barhello

Итак, у меня есть

:nnoremap cP "_diwp

Вопрос в том, как "слить"

:nnoremap cp "_diwP
:nnoremap cP "_diwp

в одной карте?

Спасибо за помощь.

2 ответа2

1

Мой плагин ReplaceWithRegister предоставляет gr сопоставление, аналогичное вашему, которое обрабатывает особые случаи, подобные вашему.

Также вас может заинтересовать плагин Smartput ; он изменяет команды p / P для автоматической настройки пробелов, запятых и т. д. С его помощью вы также можете достичь своей цели (хотя вам придется использовать :nmap , а не :nnoremap чтобы включить плагин в ваших сопоставлениях).

0

Вы можете использовать ciw вместо diw и затем вставить в режиме вставки:

:nnoremap cp "_ciw<C-r>"<Esc>

Или всегда используйте P но только потом удаляйте оригинальное слово:

:nnoremap cp "_yiwPl"_de

"_yiw означает перейти к началу исходного слова (b завершается ошибкой, если курсор уже находится на первом символе слова, и обходные пути, такие как lb также имеют подводные камни, если :set ve+=onemore).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .