重新映射yank(y),更改(c)和删除(d)

时间:2012-04-19 14:09:38

标签: vim

我一直在努力扩展这三个命令(y,c,d)的功能,所以我在系统剪贴板(“+寄存器”)和普通寄存器中都有内容。

这是我到目前为止所提出的:

nnoremap Y y$v$"+y$
nnoremap yy 0y$0v$"+y$
vnoremap y ygv"+y
" ------
nnoremap C y$v$"+c
nnoremap cc 0y$0v$"+c
vnoremap c ygv"+c
" ------
nnoremap D y$v$"+d$
nnoremap dd 0y$0v$"+d$
vnoremap d ygv"+d
" ------

我对这个映射有一些问题:

  1. 由于一些奇怪的原因,我必须在我真正使用这些新绑定之前为我的.vimrc提供资源。 试图只使用nmap,vmap甚至地图似乎根本不起作用。
  2. 当我尝试猛拉(例如)多行(例如2yy)时,它会按预期将文本拉到“常规”寄存器(“0”),但只将第一行拉入系统剪贴板。
  3. 我找不到在正常模式下为y,c和d创建此行为的方法。
  4. 任何人都可以帮助解决这些问题吗?

    我想创建一个函数,也许,所以我可以多次调用它,但是我的vim script-fu充其量只是新手。

1 个答案:

答案 0 :(得分:3)

如果你可以"+y,那么所有这些映射都是无用的。只需将set clipboard+=unnamedplus添加到~/.vimrc

即可