【发布时间】:2012-07-10 02:28:18
【问题描述】:
虽然我成功地从剪贴板映射 paste (nmap <leader>p "*p),但 yank (nmap <leader>y "*y) 的映射似乎不起作用。实际上,它会在 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
【问题讨论】:
-
检查
:reg *和:reg "。当您执行"*y时,内容始终被放入默认寄存器并通过*寄存器与系统剪贴板同步。执行"*y时,两个寄存器中的内容应该完全相同。 -
使用与您完全相同的映射 (
:nmap <leader>y "*y) 我仍然 - 从逻辑上讲 - 在"和*中得到相同的内容。我能够在这些寄存器中拥有不同内容的唯一方法是使用y和:set clipboard=。无论是否映射,"*y始终以相同的预期方式工作。也许它与其他东西冲突,请尝试:verbose nmap <leader>y和:verbose nmap y。 -
如果
"*y有效,但到"*y的映射无效,那么我猜你有一些其他映射(可能在插件中?)导致问题。我认为您正在使用 :verbose nmap。也许发生了某种递归映射?在你的地图中寻找到子串的映射。也许尝试删除插件,直到问题消失或发现问题插件?你可能想看看execute "normal!"或noremap... -
@AdrienGiboire:试试这个。
:redir @a,然后是:nmap或:verbose nmap,最后是:redir END。这些步骤基本上将 nmap 的输出重定向到a寄存器。然后创建一个新缓冲区,粘贴到a寄存器中,并使用/搜索来查找诸如"、* 和y 之类的内容,以查看它们是否在某些情况下被重新映射。