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


54

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

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

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


为避免与默认Vim键冲突,请选择Ctrl + Shift + Key而不是Ctrl + Key
Sheharyar

Answers:


50

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

source $VIMRUNTIME/mswin.vim
behave mswin

但是请注意,可视模式是CTRL-Q而不是CTRL-V。

有关mswin.vim的概述,请参见 mswin.vim sourcode。它的注释非常好,如果不清楚某些命令,则可以在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中输入以下内容,以在菜单中的Paste之外显示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>+

我没有对其进行彻底的测试,只是快速检查它是否达到了我的预期。为我工作,希望它为您工作;-)


1
我理解并赞赏曼尼和彼得·索林在彼得·索林的回答中的观点。我的想法是,我在Windows上学习了GVim,以替代记事本,并且希望减少摩擦。由于路德维希
pcapademic

2
有没有办法更改菜单快捷方式文本以匹配新的快捷键?
Nippysaurus,2009年

@Nippysaurus:我曾在.gvimrc中使用menutrans尝试过。没让它正常工作,晚上会再看一下……
路德维希·韦恩泽尔

2
看来mswin.vim已经有behave mswin电话了。我有必要自己再次致电_vimrc吗?
弥敦道之友

1
@NathanFriend同上 即使没有behave mswin,它也能正常工作,至少在使用Vim 8.0的系统上是如此。
Mikel

46

如果要使用“标准”热键来执行“剪切/复制/粘贴”操作,但又不想更改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和逐块可视模式发生冲突。这不是问题,因为“复制并剪切”使您进入了插入模式,因此您可以在以后立即粘贴。如果尝试一下,您会发现它感觉完全自然。

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


这正是我想要的。谢谢。
肖恩·麦克莱里

2
一些实验和协商后:help i_ctrl-r_ctrl-o,我决定改变imap <C-v> <ESC>"+paimap <C-v> <C-r><C-o>+; 当光标位于行的第一个字符的左侧时,这可以按预期工作,并且它最接近于模仿“标准”行为。
Holger 2012年

我正在考虑更改<C-v>似乎在我的机器上快得多的shift + insert。但是在项目的中间,现在不想重新启动vim。只是分享
2012年

您真棒=)
Yugal Jindle

9

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

set clipboard=unnamed

我个人在vim中使用的缓冲区远多于vim与系统之间的缓冲区。因此,我宁愿有一个稍微麻烦一些的快捷方式,而不是让系统剪贴板不断崩溃。但是很高兴为那些喜欢它的人提供了该选项。


2

我认为您可以使用: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以了解有关重新映射和取消映射内容的更多信息。

祝好运!


1
这应该可以解决问题。但这是一个坏主意。Ctrl-V应该进入可视模式,Ctrl-C将取消任何命令。而且该技巧仅适用于您的系统;在另一台机器上,您将迷路。
innaM

1
我部分同意这是一个坏主意,我不想自己使用它,但是如果您只是gvim的临时用户,那么您可能永远不会错过删除的绑定。
彼得·索林

1
为什么首先使用gvim?您会成为临时用户多长时间?
innaM

2
我认为这不是一个坏主意。人们习惯于Ctrl + X等,还有数十亿其他原因使用vim。
路德维希·威尼泽尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.