Vim:仅在yank命令中使用+作为默认寄存器

10

我想仅使用+寄存器(系统剪贴板)来执行yank命令(也就是说,在dd或其他命令中不要覆盖此寄存器)。

:set clipboard+=unnamed

不会起作用,因为它引入了上面描述的 dd 覆盖问题。


2
set clipboard=unnamedplus 使用 + 进行所有剪贴板操作。:help clipboard-unnamedplus。我在这里留下它,以防有人需要。 - dza
2个回答

8

您可以覆盖默认的yank命令,使其默认为系统剪贴板,除非显式给出另一个寄存器:

:nnoremap <expr> y (v:register ==# '"' ? '"+' : '') . 'y'
:nnoremap <expr> yy (v:register ==# '"' ? '"+' : '') . 'yy'
:nnoremap <expr> Y (v:register ==# '"' ? '"+' : '') . 'Y'
:xnoremap <expr> y (v:register ==# '"' ? '"+' : '') . 'y'
:xnoremap <expr> Y (v:register ==# '"' ? '"+' : '') . 'Y'

1
谢谢。现在我也使用相同的方法来处理 pd - sheerun

6

d 更像是“剪切”而不是“删除”。所以你得到的是正常行为。

你可以使用“黑洞寄存器”:"_d。我已经将其映射到<leader>d


+1 我几乎从不使用黑洞寄存器,因为我从未想过将其映射到像 <leader>d 这样的简单东西。 - Michael Berkowski
它的工作方式与 d 相同。使用 let mapleader=",",dd,di(,dtx,d/foo - romainl

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