tmux+中的剪贴板故障;升级到MacOS Sierra后的vim

tmux+中的剪贴板故障;升级到MacOS Sierra后的vim,vim,tmux,macos-sierra,neovim,Vim,Tmux,Macos Sierra,Neovim,昨天,我升级到MacOS Sierra,它破坏了我在tmux+neovim设置中的剪贴板功能 以下是行为: 我可以使用标准的ctrl+c、ctrl+p在系统vim之间进行复制/粘贴 当不在tmux会话中时,我可以在两个VIM实例之间拖动/粘贴 在tmux会话中,我无法在两个VIM实例之间拖动/粘贴 每当我在tmux会话中使用vim中的剪贴板时,就会出现以下vim错误: clipboard: error: 我的.vimrc非常庞大,但我认为以下内容可能与此相关: set clipboard=

昨天,我升级到MacOS Sierra,它破坏了我在tmux+neovim设置中的剪贴板功能

以下是行为:

  • 我可以使用标准的ctrl+c、ctrl+p在系统vim之间进行复制/粘贴
  • 当不在tmux会话中时,我可以在两个VIM实例之间拖动/粘贴
  • 在tmux会话中,我无法在两个VIM实例之间拖动/粘贴
每当我在tmux会话中使用vim中的剪贴板时,就会出现以下vim错误:

clipboard: error:
我的
.vimrc
非常庞大,但我认为以下内容可能与此相关:

set clipboard=unnamed
在my
.tmux.conf
中(为简洁起见,也将其截断):

编辑:这似乎与此处报告的错误有关:


升级到Sierra后,我也看到了同样的情况。在我的例子中,它源于安装了YankRing插件

将以下内容添加到my.vimrc中为我修复了它:

"-------------------------------------------------------------
" Fix for YankRing bug
"-------------------------------------------------------------
let g:yankring_clipboard_monitor=0

这似乎是macOS Sierra的倒退。以下人员提到了一个对我有效的解决方案:

brew安装重新附加到用户命名空间

确保在.tmux.conf中设置了以下内容:

set -g default-shell $SHELL 
set -g default-command "reattach-to-user-namespace -l ${SHELL}"
在.vimrc或~/.config/nvim/init.vim中(对于Neovim):


现在一切正常,我可以使用vim键绑定和/或系统ctrl+c/ctrl+p在系统vim会话之间复制/粘贴。升级brew+vim+tmux为我修复了以下问题:

brew update
brew upgrade vim
brew upgrade tmux
注意事项:

  • 我没有使用Neovim,但希望这会有所帮助
  • 这可能需要一段时间,具体取决于您的机器的速度
  • 当我为我做这个brew升级的ruby时,它抱怨它不会覆盖现有的符号链接,所以我不得不手动运行:
    brew链接——覆盖ruby
  • Tmux抱怨升级后出现以下设置。我刚刚把它注释掉了:
    #设置选项-g status-utf8 on
  • 我收到一条关于需要新的xcode工具的警告,因此我运行了以下命令并接受了GUI提示:
    xcode选择--install
    (事后看来,这可能会弄乱我的
    react native
    install:/。买家当心)
  • 当第一次运行
    brew update
    brew抱怨它没有对
    /usr/local
    的写访问权限时,我让自己成为
    /usr/local
    非递归的所有者。更新后,brew告诉我可以将所有者更改回
    root:wheel

Neovim或Vim?@romainl两者,只要它们在tmux会话中运行。参见第二期发行链接中提到的回购协议。每一个新的MacOS版本都引入了一个循环回归。谢谢!我推迟了升级一段时间,因为可能会发生这样的小事情。苹果最后一次惹恼了我,我升级了。。。啊!谢谢你为我工作。我正在使用“*”寄存器复制到剪贴板,因此跳过了
set clipboard=unnamed
行。但是,打开的每个新tmux窗格都被命名为“重新附加到用户命名空间”。这是意料之中的吗?@ChristianFazzini我个人对这个修正做了一些修改,以避免这个问题。在我的
~/.bashrc
(我使用bash)中,我添加了
别名nvim='repattach-to-user-namespace-l nvim'
。这样,我只在需要时调用resattach to user namespace,因为我不会复制和粘贴bash中的任何其他地方。
set clipboard=unnamed
对我很有用!谢谢(我甚至没有使用tmux)还值得注意的是,您需要使用以下命令重新启动tmux服务器:
tmux kill server
对于tmux和Iterm2,我需要获得一个测试版本才能工作(转到Iterm2首选项|常规,并在服务部分选择
提示测试版本
)。
set clipboard=unnamed
brew update
brew upgrade vim
brew upgrade tmux