2014-11-03 474 views
1

vim中的复制粘贴功能对我来说似乎有点不一致。命令yy,ddcc抽出/删除整行。 DC命令从光标删除到行尾,但是Y代替了整行。我想要Y的工作方式与DC相同。所以我把下面一行放在我的.vimrc中:在vim中重新映射“Y”

nmap Y y$ 

虽然它似乎没有工作。我的第一个想法是,这是因为一些插件干扰。我试图把这个命令放到我的.vimrc的开头和结尾,但没有任何帮助。但是,如果我手动键入命令(而不是从.vimrc),它的工作原理。为什么是这样?我如何完成这项工作?

+2

与线在你的vimrc结束,有什么的'输出:详细的地图Y'?顺便说一句,考虑使用'nnoremap Y $'' – Kent 2014-11-03 20:42:48

回答

4

您的vimrc在加载插件之前加载,所以这并不排除插件重写它。将.vim文件放入.vim/after/将在插件后加载,以便您可以通过这种方式测试该理论,以避免逐个删除插件的路线。

正如Kent提到的那样,您应该考虑使用nnoremap而不是nmap

+0

实际上,密钥被YankRing插件覆盖。从.vim/after开始映射它,但我真的需要'nmap'而不是'nnoremap',因为当我在命令中使用'y'时,我希望YankRing能够实际捕获它。 – petersohn 2014-11-07 21:12:35

+0

YankRing文档提到您可以添加以下功能: 函数! YRRunAfterMaps() nnoremap Y: YRYankCount'y $' endfunction 避免YankRing优先于映射。 – piro 2015-06-04 17:33:09

2

粘贴一个新的答案,因为代码未在上述答案的评论中格式化。

如果冲突YankRing你可以使用:

function! YRRunAfterMaps() 
    nnoremap Y :<C-U>YRYankCount 'y$'<CR> 
endfunction 
nnoremap Y y$ 

来源::help yankring-custom-maps