如何在 vim 中仅将抽取的文本复制到系统剪贴板

How to copy only yanked text to system clipboard in vim

我可以使用 clipboard=unnamedplus 复制到系统剪贴板。但是,当使用 ddciw.

等命令时,这也会将文本复制到系统剪贴板

例如,如果我复制一些文本,然后使用 ciw,我要替换的文本会被复制到系统剪贴板中,我必须再次复制原始文本才能粘贴它.

我想要的是只有当我拉出(y)一个选择,或者使用诸如yyyiw或类似的命令时才复制到系统剪贴板。

如果只想在某些情况下复制到系统剪贴板,可以使用"*寄存器而不是全局设置clipboard,例如:"*yy.

或者,如果您想确保命令不会进入系统剪贴板,您可以使用不同的寄存器或黑洞寄存器 "_

有关寄存器的更多信息:

解决办法是把这个放在我的.vimrc:

" Use system clipboard by default
set clipboard=unnamedplus

" Remap 'c', 'C', 'd', 'D', 'x' and 'X' to save text in a custom register
nnoremap c "cc
vnoremap c "cc
nnoremap C "cC
vnoremap C "cC

nnoremap d "dd
vnoremap d "dd  
nnoremap D "dD
vnoremap D "dD

nnoremap x "xx
vnoremap x "xx
nnoremap X "xX
vnoremap X "xX

我在这里找到了解决方案: