Подтвердить что ты не робот

Сбой буфера обмена в 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

4b9b3361

Ответ 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