当在一个tmux会话中使用vim时,我无法转储或粘贴到未命名的寄存器。去一个命名的寄存器工作正常,但未命名从不工作。
错误是:
E353: Nothing in register *
从错误消息(寄存器*中没有),看起来当你做一个简单的? p,你的Vim实例使用
*
register而不是
unnamed register *。这可能是因为您的
clipboard
option包括未命名的值。当以这种方式配置时,Vim将默认使用*寄存器而不是未命名的寄存器用于yank,delete,change和put操作(即除非你指定另一个带有前缀的寄存器,例如ap从a寄存器) 。
*未命名的寄存器实际上被命名为“(双引号)。它只是”未命名“,在你不必命名它使用它(它是默认值)的意思,你不必说”从无名寄存器,只是p。
剪贴板的默认值不包含未命名,因此它可能来自您的配置(或插件)的一些位。命令:verbose set clipboard?将显示设置当前值的脚本。如果这是在你的配置文件中,那么你可能不想做,当你在tmux下运行。例如:
if $TMUX == '' set clipboard+=unnamed endif
或者,可以有一些方法让Vim-inside-tmux的实例访问GUI选择/剪贴板(从而使用*寄存器和/或在剪贴板中未命名)。如果您正在运行Mac OS X,您可能需要查看my workaround wrapper,为在tmux会话中运行的进程重新启用剪贴板访问。如果你使用一些其他的操作系统或图形用户界面,那么你需要找出Vim如何正常地与GUI通信,以及为什么它不工作(例如,在X11下错误的DISPLAY值,可能是由于附加到正在运行的旧会话具有过期值的shell)。