升级到 MacOS Sierra 后 tmux + vim 中的剪贴板失败

Clipboard failure in tmux + vim after upgrading to MacOS Sierra

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

行为如下:

每当我在 tmux 会话中使用 vim 中的剪贴板时,我都会收到以下 vim 错误:

clipboard: error:

我的 .vimrc 很大,但以下是我认为可能相关的内容:

set clipboard=unnamed

在我的 .tmux.conf 中(为简洁起见也被截断):

set -g prefix `                                   # use tilde key as prefix
bind ` send-key `                                 # insert tilde by pressing twice

set -g history-limit 100000                       # set buffer size
set -s escape-time 0                              # fix escape key in vim
set -g allow-rename off                           # keep window names static
set -g default-terminal "screen-256color"         # set the TERM to 256 colors
set -g base-index 1                               # start window count at 1
set -g pane-base-index 1                          # start pane count at 1
set -g default-shell $SHELL                       # use zsh as shell

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

https://github.com/tmux/tmux/issues/543

https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard/issues/53

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

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

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

这似乎是 macOS Sierra 的回归。 Josh McGinnis https://github.com/tmux/tmux/issues/543:

提到了一个对我有用的解决方案

brew install reattach-to-user-namespace

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

set -g default-shell $SHELL 
set -g default-command "reattach-to-user-namespace -l ${SHELL}"

在 .vimrc 或 ~/.config/nvim/init.vim(对于 Neovim):

set clipboard=unnamed

现在一切正常,我可以 copy/paste 在系统 <-> vim 会话之间使用 vim 键绑定 and/or 系统 ctrl+c / ctrl+p。

升级 brew + vim + tmux 为我解决了这个问题:

brew update
brew upgrade vim
brew upgrade tmux

备注:

  • 我没有使用 Neovim 但希望这无论如何都会有所帮助
  • 这可能需要一段时间,具体取决于您的机器有多慢
  • 当我为我升级 brew ruby 时,它抱怨说它不会覆盖现有的符号链接,所以我不得不手动 运行:brew link --overwrite ruby
  • Tmux 升级后抱怨以下设置。我刚刚把它注释掉了:# set-option -g status-utf8 on
  • 我收到一个关于需要新 xcode 工具的警告,所以我 运行 接受了以下 GUI 提示:xcode-select --install(事后看来,这可能会弄乱我的 react-native 安装 :/. 买家当心)
  • 当第一个 运行ning brew update brew 抱怨它没有对 /usr/local 的写入权限时,所以我让自己成为 /usr/local 的所有者非递归。更新后 brew 告诉我可以将所有者更改回 root:wheel