实现CTRL + V粘贴到VIM中,粘贴后总是偏移一个字符

时间:2011-11-03 08:01:59

标签: vim paste

我在gVIM中使用imap <c-v> <ESC>"+PA进行粘贴,但是,每次我尝试粘贴时都会出现意外结果:

aa${CURSOR}aa,现在按^ V,我得到a${PASTE_TXT}aaa,但我想要aa${PASTE_TXT}aa

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:7)

我建议您不要重新映射CTRL-V,当您想插入原始字符时它非常有用。要在插入模式下粘贴,您无需切换到正常模式。使用 CTRL - R 然后 CTRL - O ,然后 + 。那不是很久。您可以重新映射F键来执行此操作:

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

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

有关详情,请参阅:help i_CTRL-R。您可能也想this answer我给出了关于寄存器的信息。

如果您仍想使用普通模式保留地图,请将P替换为p,将A替换为a。毕竟你要在离开插入模式后停止的最后一个字符后粘贴,并在粘贴文本后继续插入,而不是在行尾。

:inoremap <C-v> <Esc>"+pa

答案 1 :(得分:2)

imap <c-v> <ESC>"+PA更改为imap <c-v> <ESC>"+pA

大写P在光标位置前粘贴,小写p在光标位置之后。