Реализация CTRL + V для вставки в VIM, всегда смещается на один символ после вставки - PullRequest
1 голос
/ 03 ноября 2011

Я использую imap <c-v> <ESC>"+PA в gVIM для вставки, однако каждый раз, когда я пытался вставить, я получал неожиданный результат:

aa${CURSOR}aa, и нажмите ^ V прямо сейчас, я получил a${PASTE_TXT}aaa, но я хотел aa${PASTE_TXT}aa.

Как я могу это исправить?

Ответы [ 2 ]

7 голосов
/ 03 ноября 2011

Я бы посоветовал вам не переназначать CTRL-V, это действительно полезно, когда вы хотите вставить необработанные символы.Чтобы вставить в режиме вставки, вам не нужно переключаться в обычный режим.Используйте CTRL - R , затем CTRL - O , затем + .Это не так долго.Вы можете переназначить клавишу F, чтобы сделать это:

:inoremap <F1> <C-r><C-o>+

или

:inoremap <C-v> <C-r><C-o>+

См. :help i_CTRL-R для получения дополнительной информации.Вам также может понравиться этот ответ , который я дал о регистрах.

Если вы все еще хотите сохранить отображение в обычном режиме, замените P на p и A на a.В конце концов, вы хотите вставить после последнего символа, который вы остановили при выходе из режима вставки, и продолжить вставку после вставленного текста, а не в конце строки.

:inoremap <C-v> <Esc>"+pa
2 голосов
/ 03 ноября 2011

Изменить imap <c-v> <ESC>"+PA на imap <c-v> <ESC>"+pA

Верхний регистр P вставляется перед позицией курсора, нижний регистр p - после позиции курсора.

...