我想仅使用+寄存器(系统剪贴板)来执行yank命令(也就是说,在dd
或其他命令中不要覆盖此寄存器)。
:set clipboard+=unnamed
不会起作用,因为它引入了上面描述的 dd
覆盖问题。
您可以覆盖默认的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'
p
和 d
。 - sheerund
更像是“剪切”而不是“删除”。所以你得到的是正常行为。
你可以使用“黑洞寄存器”:"_d
。我已经将其映射到<leader>d
。
<leader>d
这样的简单东西。 - Michael Berkowskid
相同。使用 let mapleader=","
:,dd
,,di(
,,dtx
,,d/foo
。 - romainl
set clipboard=unnamedplus
使用 + 进行所有剪贴板操作。:help clipboard-unnamedplus。我在这里留下它,以防有人需要。 - dza