![将 Ctrl-Shift-V 映射到 vi 中的操作](https://linux22.com/image/1397401/%E5%B0%86%20Ctrl-Shift-V%20%E6%98%A0%E5%B0%84%E5%88%B0%20vi%20%E4%B8%AD%E7%9A%84%E6%93%8D%E4%BD%9C.png)
我希望能够使用 Ctrl-Shift-V 从 Windows 上的 gVim 剪贴板粘贴内容,就像在 Terminator 中一样。
但是,如果我把这个放在我的 .vimrc 上
imap <C-S-V> "+gP
此快捷键无需 Shift 即可使用,这意味着我只需按 Ctrl-V 即可粘贴文本。这会覆盖现有功能,有没有办法只使用 Ctrl-Shift-V 进行粘贴?
答案1
<C-V>
Vim 无法区分、<C-v>
和之间的区别<C-S-V>
。
如果您想要区分大小写的映射,则需要使用未修改的字符,或者 Alt 键(例如<A-v>
或与或<M-v>
不同)。<A-V>
<M-V>
答案2
由于键盘输入的内部处理方式,遗憾的是,即使在 GVIM 中,这在今天也普遍无法实现。某些组合键(如Ctrl+ 非字母)无法映射,并且无法区分Ctrl+ 字母和Ctrl+ Shift+ 字母。(除非您的终端发送不同的术语表代码,大多数人没有。)在插入或命令行模式下,尝试输入组合键。如果没有任何反应 / 插入,则无法使用该组合键。这也适用于<Tab>
/ <C-I>
、<CR>
/ <C-M>
/ <Esc>
/<C-[>
等。(唯一的例外是<BS>
/ <C-H>
。)这是一个已知的痛点,也是 vim_dev 和 #vim IRC 频道上各种讨论的主题。
有些人(首先是 Paul LeoNerd Evans)想要修复这个问题(即使对于支持该功能的终端中的控制台 Vim),并提出了各种建议,cp。http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8
但截至今天,还没有任何补丁或志愿者提出,尽管许多人表示希望在未来的 Vim 8 主要版本中拥有这一点。
答案3
您可以Ctrl-Shift-v
对终端本身(而不是 vim)进行编程以进行拦截,您可以配置拦截的方式。
对我来说,我启动Konsole
应用程序,单击设置菜单 -> 配置快捷方式 -> 搜索Ctrl+Shift+v
并将其重新映射到Ctrl-V
。所以现在这个键盘组合不会传到 vim,你可以让 Konsole 做正确的事情来粘贴剪贴板内容。
如果您正在使用 Konsole 以外的其他终端,您可以搜索其功能以拦截该键盘组合,然后手动控制 vim 以使其执行正确的操作。