Сбой буфера обмена в tmux + vim после обновления до MacOS Sierra
Вчера я обновился до MacOS Sierra, и он сломал мои функции буфера обмена в настройках tmux + neovim.
Вот поведение:
- Я могу использовать стандартный ctrl + c, ctrl + p для копирования/вставки между системой ↔ vim
- Я могу выдернуть/вставить между двумя экземплярами VIM, когда NOT в сеансе tmux
- Я не могу выдернуть/вставить между двумя экземплярами VIM, когда в сеансе tmux
Когда я использую буфер обмена в vim в сеансе tmux, я получаю следующую ошибку vim:
clipboard: error:
My .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
EDIT: похоже, это связано с сообщением об ошибке:
https://github.com/tmux/tmux/issues/543
https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard/issues/53
Ответы
Ответ 1
Это похоже на регресс на macOS Sierra. Решение, которое сработало для меня, было упомянуто Джошем Макгиннисом 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
Теперь все хорошо, и я могу копировать/вставлять между сеансами System ↔ vim, используя комбинации клавиш vim и/или ctrl + c/ctrl + p.
Ответ 2
Обновление brew + vim + tmux исправлено для меня:
brew update
brew upgrade vim
brew upgrade tmux
Примечания:
- Я не использую Neovim, но надеюсь, что это все равно поможет
- Это может занять некоторое время в зависимости от того, насколько медленна ваша машина.
- Когда я сделал этот brew обновленный рубин для меня, и он жаловался, что он не будет перезаписывать существующие символические ссылки, поэтому мне пришлось вручную запускать:
brew link --overwrite ruby
- Tmux жаловался на следующие настройки после обновления. Я просто прокомментировал это:
# set-option -g status-utf8 on
- У меня возникло предупреждение о необходимости использования новых инструментов xcode, поэтому я выполнил следующее и принял приглашения GUI:
xcode-select --install
(В ретроспективе это может испортить мой react-native
install:/. Buyer beware)
- При первом запуске
brew update
brew жаловался, что у него нет доступа на запись к /usr/local
, поэтому я сделал себя владельцем /usr/local
НЕ-РЕКУРСИВ. После обновления brew мне сказали, что я могу изменить владельца обратно на root:wheel
.
Ответ 3
Я видел то же самое при обновлении до Сьерры. В моем случае это было связано с установкой плагина YankRing.
Добавление следующего в мой .vimrc исправил его для меня:
"-------------------------------------------------------------
" Fix for YankRing bug
"-------------------------------------------------------------
let g:yankring_clipboard_monitor=0