【发布时间】:2012-04-19 22:42:15
【问题描述】:
我一直在尝试扩展这三个命令 (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
" ------
我对这个映射有一些问题:
- 出于某种奇怪的原因,我必须先获取我的 .vimrc 资源,然后才能真正使用这些新绑定。 尝试只使用 nmap、vmap 甚至 map 似乎根本不起作用。
- 当我尝试拉动(例如)多行(例如 2yy)时,它会按预期将文本拉入“常规”寄存器 ("0),但仅将第一行拉入系统剪贴板。
- 我找不到在正常模式下为 y、c 和 d 创建此行为的方法。
谁能帮助解决这些问题?
我想创建一个函数,也许,所以我可以多次调用它,但我的 vim script-fu 充其量是新手。
【问题讨论】:
-
你不想只使用系统剪贴板作为所有东西的默认寄存器吗?
-
实际上不知道。我还不太熟悉 vim 中寄存器的概念,但我知道如果我强制将其拉入 "+ 寄存器,它不会像原来那样在 1-9 寄存器中加起来。虽然它可以使用 YankRing 插件相对容易地解决,我只是不想限制原始行为。此外,要 yank 2 行我需要写“+2y,而不是 2”+y 我认为。对吗?
-
不,您必须输入
"+2yy:"+用于寄存器,2和yy才能拉出整行。
标签: vim