如何在Vim中将yank映射到操作系统的剪贴板?

5

可能重复:
vim:将选择内容复制到OS X剪贴板

我已经成功地将来自剪贴板的粘贴映射了(nmap <leader>p "*p),但是同样的映射yanknmap <leader>y "*y)似乎没有起作用。实际上,它将yank到了Vim的剪贴板中。

有什么好的方法可以解决这个问题吗?我知道有clipboard=unnamed但我可能会保留旧的yank/paste vim命令。

编辑:我的需求似乎有些引起混淆。

命令"*y可行。所以我的Vim环境中的+clipboard没什么问题。不好用的是映射部分。

我想添加一些东西,比如:

nmap <leader>y "*y # Doesn't work as expected. It copies only in Vim's clipboard, ie I have to type `p` to paste the copied content instead of `"*p`.
nmap <leader>p "*p # Works as expected.

我更清楚了吗?第二次编辑:以防万一,因为我不知道什么能帮助你帮助我,这是我的机器上“vim--version”的渲染: https://gist.github.com/3090385

@perreal: % vim --version | grep clipboard -clientserver **+clipboard** +cmdline_compl +cmdline_hist +cmdline_info +comments @perreal, @GWW: 重点不是如何使用操作系统的剪贴板进行复制/粘贴。这已经可以工作了。问题在于如何映射这些命令。只是映射有误,但我不知道为什么... - Adrien
1
检查:reg *:reg "。当你执行"*y时,内容总是放入默认寄存器通过*寄存器与系统剪贴板同步。当你执行"*y时,两个寄存器中应该有完全相同的内容。 - romainl
1
使用与您相同的映射(:nmap <leader>y "*y),我仍然逻辑上在“”和“*”中得到相同的内容。我能够在这些寄存器中拥有不同的内容的唯一方法是使用 :set clipboard= 进行复制。无论是否映射,"*y 总是按预期方式工作。也许它与其他某些东西冲突了,请尝试 :verbose nmap <leader>y:verbose nmap y - romainl
1
如果"*y可以工作,但映射到"*y的操作无法正常工作,那么我猜测您可能有其他映射(也许是插件?)导致问题。我认为您正在使用:verbose nmap进行跟踪。也许存在某种递归映射?请查找映射到您映射中子字符串的映射。或者尝试删除插件,直到问题消失或确定问题插件?您可能需要查看execute "normal!"noremap... - darcyparker
1
@AdrienGiboire:试试这个。输入 :redir @a,然后输入 :nmap 或者 :verbose nmap,最后输入 :redir END。这些步骤基本上是将 nmap 的输出重定向到寄存器 a 中。然后创建一个新的缓冲区,在其中粘贴寄存器 a 中的内容,并使用 / 搜索来查找像 ", * 和 y 这样的内容,以查看它们是否在某些情况下被重新映射了。 - darcyparker
显示剩余7条评论
1个回答

6
如果你在剪切之前进行可视选择,则需要使用vmap而不是nmap。否则,yank是一个普通命令,并且需要一个动作命令。

确实!现在你告诉我,这很有道理!原来如此简单!谢谢 ^^ - Adrien

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