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

pca*_*mic 57 linux text-editing gvim ubuntu

默认情况下,Ubuntu 上 GVim 中的剪切/复制/粘贴快捷方式是:

 切"+x
 复制“+y
 粘贴“+gP

我想在 GVim 中使用控制键组合,就像我在 Firefox 和其他 gnome 应用程序中使用的那样。如何配置 GVim 使其像其他 Gnome 应用程序一样工作?

Lud*_*erl 54

将以下行添加到您的_vimrc.vimrc

source $VIMRUNTIME/mswin.vim
behave mswin
Run Code Online (Sandbox Code Playgroud)

但要注意,视觉模式是 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 是撤销;虽然不在 cmdline 中
  • CTRL-Y 是重做(虽然不重复);虽然不在 cmdline 中
  • Alt-Space 是系统菜单
  • CTRL-A 是全选
  • CTRL-Tab 是下一个窗口
  • CTRL-F4 关闭窗口

应 Nippysaurus 的要求:我将以下内容放入我的 .gvimrc 以在菜单中显示 Ctrl-V 之外的 Paste:

unmenu! Edit.Paste
aunmenu Edit.Paste
nnoremenu 20.360 &Edit.&Paste<Tab>Ctrl-V        "+gP
cnoremenu    &Edit.&Paste<Tab>Ctrl-V        <C-R>+
Run Code Online (Sandbox Code Playgroud)

我没有彻底测试它,只是快速检查它是否符合我的预期。对我有用,希望对你有用;-)

  • 有没有办法更改菜单快捷方式文本以匹配新的快捷键? (2认同)
  • 看起来 `mswin.vim` 已经有一个 `behave mswin` 调用。是否有必要在我自己的 `_vimrc` 中再次调用它? (2认同)

小智 52

如果您希望剪切/复制/粘贴使用“标准”热键工作,但又不想更改 gvim 中的任何其他配置选项,请尝试将以下内容添加到~/.vimrc.

vmap <C-c> "+yi
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <C-r><C-o>+
Run Code Online (Sandbox Code Playgroud)

Paste 只在 Visual 和 insert 模式下有效,所以你不必担心与 Ctrl-V 和 blockwise Visual Mode 的冲突。这不是问题,因为复制和剪切使您进入插入模式,因此您可以在之后立即粘贴。如果您尝试一下,您会发现它感觉完全自然。

经过多次反复调整后,我想出了这个配置,我认为现在它是“完美的”。如果您对当前的复制/粘贴配置甚至有点不满意,请尝试一下,我敢打赌您会喜欢它。

  • 经过`:help i_ctrl-r_ctrl-o`的一些实验和咨询,我决定将`imap &lt;Cv&gt; &lt;ESC&gt;"+pa`更改为`imap &lt;Cv&gt; &lt;Cr&gt;&lt;Co&gt;+`;这可以作为当光标位于一行的第一个字符的左侧时预期,并且它最接近地模仿“标准”行为。 (2认同)

jtb*_*jtb 9

如果您想保持正常的 vim 行为,但也允许不那么麻烦地使用系统剪贴板,请参阅访问系统剪贴板。如果您想gVim的使用系统剪贴板作为其默认的缓冲区(所以任何xyp,等命令使用剪贴板),然后添加下面一行到你的vimrc:

set clipboard=unnamed
Run Code Online (Sandbox Code Playgroud)

我个人在 vim 中使用缓冲区的次数远远超过 vim 和系统之间的缓冲区;所以我宁愿有一个稍微麻烦一点的快捷方式,也不愿让我的系统剪贴板不断被破坏。但很高兴选择适合那些喜欢它的人。