Vim的"yank"功能似乎无法使用。

31

我对Vim还比较陌生。今晚,我学习了"yank"命令,但是在MacVim中尝试使用它时,它没有任何作用。无论是Y还是y{motion}都没有任何反应。我尝试使用默认的.vimrc文件来排除任何奇怪的配置问题。

Google搜索也没能解决我的问题。这感觉像是新手问题。我是否漏掉了一些显而易见的东西?


Y是什么意思?你是不是想说y - icedwater
@icedwater:Yyy 的同义词。 - Amadan
1
啊,谢谢@Amadan - 我从来不用它,因为对我来说yy比按Shift键快得多。不过知道这个还是很好的。 - icedwater
谢谢您提出这个问题!它也让我疯狂了。我一直试图从系统剪贴板粘贴。;-) - Andrew Smith
5个回答

58
如果您在.vimrc中使用了set clipboard=unnamedplus,则此设置将无效。
对于OSX,您需要使用set clipboard=unnamed 对于Linux,您可能需要使用set clipboard=unnamedplus 这是我的个人.vimrc的代码片段。
if system('uname -s') == "Darwin\n"
  set clipboard=unnamed "OSX
else
  set clipboard=unnamedplus "Linux
endif

4
谢谢,我在使用OSX,你的提示解决了问题。 - Niloct
1
我想在Mac和Linux之间共享相同的.vimrc文件 - 是否可以在配置文件中添加一些IF语句?好的,我找到了https://dev59.com/m3E85IYBdhLWcg3wUBoZ - Vitaly Zdanevich
@VitalyZdanevich,是的,谢谢你的询问。我已经更新了答案,并附上了我个人配置文件中的片段。 - Weston Ganger
1
+1 我使用 i3 和 Vim,已经寻找解决方案几个小时了,这个解决方案解决了我的问题。我能够从应用程序中复制粘贴到 Vim,从 Vim 到其他 Vim 实例和终端,但无法从 Vim 复制粘贴到例如 Chromium 和其他应用程序中。设置clipboard=unnamedplus解决了这个问题。幸运地发现了这个答案。即使它是一个相对较旧的答案: 谢谢您!现在,我终于可以只用键盘完成所有事情,并放下鼠标 :) - Rens Tillmann
谢谢你的回答。它解决了我的问题。我的.vimrc文件中有set clipboard=unnamedplus - Evan Knox Thomas
我有一个Linux的vimrc配置文件,然后我换了一台新的OSX电脑,遇到了这个问题! - Alfredo Gallegos

27

yank命令只是将一行文本复制到剪贴板中,您需要将其p粘贴到下一行或上一行(P)中以使用已复制的行。如果要同时剪切该行,请使用delete命令。


1
哇,我真是个白痴。我以为 "yank" 命令可以删除并复制一行代码。唉,我不敢相信我刚刚浪费了一个小时在这上面。谢谢 @icedwater! - Adam Rubin
2
没问题,这种情况下您应该寻找删除(delete) - icedwater
@AdamRubin - 如果你想剪切和粘贴而不是复制和粘贴,那么你可以跳过复制步骤。 - jahroy

5

它并不做任何 可见 的事情 - 就像其他编辑器中的 Ctrl-C (复制) 一样。在执行该命令后尝试使用 p 命令 (粘贴) - 这相当于 Ctrl-V - 将之前复制的内容粘贴到文档中。


4

yank命令可以将文本复制到剪贴板中。例如,yy命令可以简单地将当前行复制到公共剪贴板中。您可以使用p命令来“粘贴”剪贴板的内容。您还可以使用类似于"ayw的命令将文本复制到命名缓冲区中,该命令可以将从当前位置到单词末尾的文本复制到名为a的缓冲区中。相应的粘贴命令是"ap


是的,这就是我期望它做的事情,但当我尝试使用它时,它什么也没做。我正在尝试在正常模式下使用它。 - Adam Rubin

1
如果你使用Ubuntu或Mint,唯一似乎有效的解决方案是卸载vim并安装"vim-gnome"软件包。然后在我的.vimrc文件中添加以下行:set clipboard=unnamedplus,就能按预期工作了。

1
unnamedplus only works on Linux. OSX uses unnamed - Weston Ganger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接