Yesterday, I upgraded to MacOS Sierra and it broke my clipboard functionality in my tmux + neovim setup.
Here is the behavior:
- I can use the standard ctrl+c, ctrl+p to copy/paste between system <-> vim
- I can yank/paste between two VIM instances when NOT in a tmux session
- I cannot yank/paste between two VIM instances when in a tmux session
Whenever I use the clipboard in vim within a tmux session, I get the following vim error:
clipboard: error:
My .vimrc
is huge, but here's what I think might be relevant:
set clipboard=unnamed
In my .tmux.conf
(also truncated for brevity):
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
EDIT: This appears to be related to the bug reported here:
https://github.com/tmux/tmux/issues/543
https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard/issues/53
This seem to be a regression on macOS Sierra. A solution that worked for me has been mentioned by Josh McGinnis https://github.com/tmux/tmux/issues/543:
brew install reattach-to-user-namespace
Ensure the following is set in .tmux.conf:
set -g default-shell $SHELL
set -g default-command "reattach-to-user-namespace -l ${SHELL}"
In .vimrc or ~/.config/nvim/init.vim (for Neovim):
set clipboard=unnamed
Now all is well and I can copy/paste between system <-> vim sessions using vim keybindings and/or system ctrl+c / ctrl+p.
Upgrading brew + vim + tmux fixed this for me:
brew update
brew upgrade vim
brew upgrade tmux
Notes:
- I am not using Neovim but hopefully this will help anyway
- This may take a while depending on how slow your machine is
- When I did this brew upgraded ruby for me and it complained that it wouldn't overwrite the existing symlinks so I had to manually run:
brew link --overwrite ruby
- Tmux complained about the following setting after the upgrade. I just commented it out:
# set-option -g status-utf8 on
- I had a warning about needing the new xcode tools so I ran the following and accepted the GUI prompts:
xcode-select --install
(In hindsight this may mess up myreact-native
install :/. Buyer beware) - When first running
brew update
brew complained it didn't have write access to/usr/local
so I made myself the owner of/usr/local
NON-RECURSIVE. After the update brew told me I could change the owner back toroot:wheel
.
I saw the same upon upgrading to Sierra. In my case it stemmed from having the YankRing plugin installed.
Adding the following to my .vimrc fixed it for me:
"-------------------------------------------------------------
" Fix for YankRing bug
"-------------------------------------------------------------
let g:yankring_clipboard_monitor=0
来源:https://stackoverflow.com/questions/39645253/clipboard-failure-in-tmux-vim-after-upgrading-to-macos-sierra