默认情况下,Ubuntu 上 GVim 中的剪切/复制/粘贴快捷方式是:
剪切 "+x 复制 "+y 粘贴 "+gP
我想在 GVim 中使用控制键组合,就像我在 Firefox 和其他 gnome 应用程序中使用的那样。如何配置 GVim 使其像其他 gnome 应用程序一样工作?
答案1
将以下几行添加到您的_vimrc
或.vimrc
source $VIMRUNTIME/mswin.vim
behave mswin
但请注意,视觉模式是 CTRL-Q 而不是 CTRL-V。
要了解 mswin.vim 的概述,请参阅 mswin.vim 源代码。它的注释非常好,如果某些命令不清楚,您可以轻松地在 vim 的帮助中查找。
以下是根据来源汇编的简要概述:
- 退格键和光标键换到上一行/下一行
- CTRL-X 和 SHIFT-Del 被剪切
- CTRL-C 和 CTRL-Insert 是复制
- CTRL-V 和 SHIFT-Insert 粘贴
- 使用 CTRL-Q 执行 CTRL-V 所执行的操作
- 使用 CTRL-S 进行保存,也可以在插入模式下进行保存
- CTRL-Z 是撤消;但不在命令行中
- CTRL-Y 表示重做(但不是重复);但不在命令行中
- Alt-Space 是系统菜单
- CTRL-A 是全选
- CTRL-Tab 是下一个窗口
- CTRL-F4 是关闭窗口
应 Nippysaurus 的要求:我在 .gvimrc 中放入了以下内容,以便在菜单中除了粘贴之外还显示 Ctrl-V:
unmenu! Edit.Paste
aunmenu Edit.Paste
nnoremenu 20.360 &Edit.&Paste<Tab>Ctrl-V "+gP
cnoremenu &Edit.&Paste<Tab>Ctrl-V <C-R>+
我没有彻底测试它,只是快速检查它是否达到了我的预期。对我来说有用,希望它对你也有用;-)
答案2
如果您希望使用“标准”热键进行剪切/复制/粘贴,但不想更改 gvim 中的任何其他配置选项,请尝试将以下内容添加到~/.vimrc
。
vmap <C-c> "+yi
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <C-r><C-o>+
粘贴仅在可视和插入模式下有效,因此您不必担心与 Ctrl-V 和块状可视模式发生冲突。这不是问题,因为复制和剪切会将您置于插入模式,因此您可以立即进行粘贴。如果您尝试一下,您会发现它感觉非常自然。
经过多次调整后,我终于想出了这个配置,我认为它现在很“完美”。如果您对当前的复制/粘贴配置有一点点不满意,请尝试一下,我敢打赌您一定会喜欢它。
答案3
如果你想要保持正常的 vim 行为,但又希望更轻松地使用系统剪贴板,请参阅访问系统剪贴板。如果您希望 gvim 使用系统剪贴板作为其默认缓冲区(因此任何x
、y
、p
等命令都使用剪贴板),则将以下行添加到您的 vimrc 中:
set clipboard=unnamed
我个人在 vim 中使用缓冲区的次数远多于在 vim 和系统之间使用缓冲区的次数;因此我宁愿使用稍微麻烦一点的快捷方式,也不愿让我的系统剪贴板不断受到破坏。但对于那些喜欢它的人来说,有这个选项是件好事。
答案4
我认为您可以使用 :imap 命令添加它(在 Windows 中尝试使用 Ctrl+X 即可,但按 ctrl+c 似乎会取消该命令,因此您可能必须在 vimrc 中执行此操作)。
:imap <C-X> "+x
:imap <C-C> "+y
:imap <C-V> "+gP
如果将其添加到您的 ~/.vimrc,您只需删除 imap 前面的 :。
imap 仅在插入模式下添加绑定,因此您可能需要将其更改为 map 或其他内容。查看:help mapmode
以了解有关重新映射和取消映射的更多信息。
祝你好运!