2016-09-22 6 views
37

Вчера я обновился до MacOS Sierra, и он сломал функциональность буфера обмена в моей установке tmux + neovim.Сбой буфера обмена в tmux + vim после обновления до MacOS Sierra

Вот поведение:

  • я могу использовать стандартный Ctrl + C, Ctrl + P, чтобы копировать/вставить между системой < -> ВИМ
  • Я могу выдернуть/вставить между двумя экземплярами VIM, когда нЕ в tmux сессии
  • Я не могу дергать/вставить между двумя экземплярами VIM, когда в tmux сессии

Всякий раз, когда я использовать буфер обмена в Vim в tmux сессии, я получаю следующее сообщение об ошибке 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 

EDIT: Это, как представляется, связано с сообщением об ошибке:

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

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

+0

Neovim или Vim? – romainl

+0

@romainl Оба, если они работают в сеансе tmux. См. Репо, упомянутое в ссылке 2-го выпуска. Кажется, это повторяющаяся регрессия, представленная с каждой новой версией MacOS. – doremi

ответ

57

Это, кажется, регресс на MacOS Sierra. Решение, которое работало для меня было упомянуто Josh McGinnishttps://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 

Теперь все хорошо, и я могу копировать/вставить между системой < -> VIM сеансы с нами vim keybindings и/или ctrl + c/ctrl + p.

+0

Спасибо за это! Некоторое время я немного улучшал условия для таких вещей, которые могут произойти. Ну, я в последний раз раздражал меня, и я обновил ... DOH! – eduncan911

+1

Спасибо за это, работал на меня. Я использую регистр «*» для копирования в буфер обмена, поэтому я пропустил строку 'set clipboard = unnamed'. – equivalentideas

+1

Эта работа. Однако каждая открытая панель tmux называется 'reattach-to-user-namespace'. Ожидается ли это? –

1

Я видел то же самое при обновлении до Sierra. В моем случае это было связано с установкой плагина YankRing.

Добавление следующих строк в мой .vimrc установил ее для меня:

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

Обновление заварить + ВИМ + tmux исправил для меня:

brew update 
brew upgrade vim 
brew upgrade tmux 

Примечания:

  • Я не использую Neovim, но мы надеемся, что это поможет в любом случае
  • Это может занять в то время как в зависимости от того, насколько медленна ваша машина
  • Когда я сделал этот варочный модернизированный рубин для меня, и он жаловался, что это не будет замените существующие символические ссылки, поэтому мне пришлось вручную запускать: brew link --overwrite ruby
  • После обновления обновления Tmux пожаловался на следующие настройки. Я просто прокомментировал это: # set-option -g status-utf8 on
  • У меня было предупреждение о необходимости новых инструментов Xcode, так что я побежал следующий и принял GUI подсказки: xcode-select --install (В ретроспективе это может испортить мой react-native установить:./Покупатель остерегается)
  • При первом запуске brew update brew жаловался, что у него не было права на запись в /usr/local, поэтому я сделал себя владельцем /usr/localNON-RECURSIVE. После обновления пиво сказал мне, что я могу изменить владельца обратно на root:wheel.
+0

Также стоит отметить, что вам необходимо перезапустить tmux-сервер с помощью следующей команды: 'tmux kill server' –

+0

Это сработало для меня! – Agis

+0

для tmux и Iterm2 Мне нужно было получить тестовый выпуск для этого (перейдите в iterm2 preferences | general и выберите 'prompt для тестовых выпусков' в разделе услуг. – diabolist