升级到 MacOS Sierra 后 tmux + vim 中的剪贴板失败
Clipboard failure in tmux + vim after upgrading to MacOS Sierra
昨天,我升级到 MacOS Sierra,它破坏了我的 tmux + neovim 设置中的剪贴板功能。
行为如下:
- 我可以在系统<->vim
之间使用标准的ctrl+c,ctrl+p到copy/paste
- 当不在 tmux 会话中时,我可以 yank/paste 在两个 VIM 实例之间
- 在 tmux 会话中,我不能在两个 VIM 实例之间 yank/paste
每当我在 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
。
昨天,我升级到 MacOS Sierra,它破坏了我的 tmux + neovim 设置中的剪贴板功能。
行为如下:
- 我可以在系统<->vim 之间使用标准的ctrl+c,ctrl+p到copy/paste
- 当不在 tmux 会话中时,我可以 yank/paste 在两个 VIM 实例之间
- 在 tmux 会话中,我不能在两个 VIM 实例之间 yank/paste
每当我在 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
。