如何使用 Ctrl+X、Ctrl+C、Ctrl+V 在 Ubuntu 上的 GVim 中进行剪切/复制/粘贴?

如何使用 Ctrl+X、Ctrl+C、Ctrl+V 在 Ubuntu 上的 GVim 中进行剪切/复制/粘贴?

默认情况下,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 使用系统剪贴板作为其默认缓冲区(因此任何xyp等命令都使用剪贴板),则将以下行添加到您的 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以了解有关重新映射和取消映射的更多信息。

祝你好运!

相关内容