将 Ctrl-Shift-V 映射到 vi 中的操作

将 Ctrl-Shift-V 映射到 vi 中的操作

我希望能够使用 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 以使其执行正确的操作。

相关内容