我想出了两种方法让剪贴板或多或少地起作用,但它们都没有完全符合我的要求。我想要的是一种复制和粘贴到剪贴板的方法,但只有当我明确告诉vim这样做时。
默认情况下,我可以使用"*p
从系统剪贴板粘贴,但是如果不设置其他选项,我找不到写入它的方法。如果我:set guioptions=a
那么这将允许我使用"+yf)
例如将文本拖入剪贴板。但是,我更喜欢使用相同的寄存器进行读写。据我所知,*
寄存器只读取而+
寄存器只写。 (并且它不会写,除非我设置guioptions=a
...它具有自动复制视觉选择文本的副作用,这不是我想要的。)
似乎更接近于我想做它的解决方案是
:set clipboard=unnamedplus
然而,问题是现在未命名的寄存器是我的剪贴板,所以每当我x
或dd
时,我都会覆盖我的系统剪贴板。我可以通过在我想要使用它之前和之后设置和取消设置clipboard
来控制它,但这不是最好的解决方案。
有没有办法可以将剪贴板设置为unnamedplus
,而不是命名寄存器?我已经尝试了set clipboard="*
,:set clipboard="*+
,:set clipboard="*plus
,:set clipboard="0
,"0plus
和"0+
,但都无济于事。我也尝试省略"
但是返回了一个错误。
我正在使用Vi IMproved 7.3(包括补丁1-547;由pkg-vim-maintainers@lists.alioth.debian.org修改; 由buildd编译@)我的操作系统是Ubuntu 13.04。
答案 0 :(得分:3)
你对剪贴板寄存器有几个误解。阅读:help x11-selection
以了解"*
和"+
之间的区别。
基本上,"*
寄存器代表当前选择,例如用鼠标标记文本(在终端中)时。此外,"+
寄存器对应于剪贴板,即您通常使用Ctrl + C和Ctrl + V访问的内容。 MS Windows只有后者,在Linux / X11上,这是两个独立的概念。也许那让你感到困惑。是的,你可以从Vim中读取和写入(假设Vim的剪贴板支持正常运行,它应该使用默认的Ubuntu软件包)。