升级到MacOS Sierra后,tmux + vim中的剪贴板故障

dor*_*emi 41 vim tmux neovim macos-sierra

昨天,我升级到了MacOS Sierra,它在我的tmux + neovim设置中打破了我的剪贴板功能.

这是行为:

  • 我可以使用标准的ctrl + c,ctrl + p来复制/粘贴系统< - > vim
  • 当不在tmux会话中时,我可以在两个VIM实例之间进行拉伸/粘贴
  • 在tmux会话中,我无法在两个VIM实例之间进行抽取/粘贴

每当我在tmux会话中使用vim中的剪贴板时,我都会收到以下vim错误:

clipboard: error:
Run Code Online (Sandbox Code Playgroud)

.vimrc是巨大的,但这是我认为可能相关的:

set clipboard=unnamed
Run Code Online (Sandbox Code Playgroud)

在我.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
Run Code Online (Sandbox Code Playgroud)

编辑:这似乎与此处报告的错误有关:

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

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

ilt*_*mpo 59

这似乎是对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}"
Run Code Online (Sandbox Code Playgroud)

在.vimrc或〜/ .config/nvim/init.vim(对于Neovim):

set clipboard=unnamed
Run Code Online (Sandbox Code Playgroud)

现在一切都很好,我可以使用vim键绑定和/或系统ctrl + c/ctrl + p在系统< - > vim会话之间复制/粘贴.

  • @ChristianFazzini我个人改变了这个修正,以避免这个问题.在我的`〜/ .bashrc`(我使用bash)中,我添加了`alias nvim ='reattach-to-user-namespace -l nvim'`.这样,我只需要在需要时调用reattach-to-user-namespace,因为我不会在bash中复制和粘贴其他任何地方. (5认同)
  • 谢谢你,为我工作.我正在使用"*"寄存器复制到剪贴板,所以我跳过了`set clipboard = unnamed`行. (2认同)

Rea*_*tic 9

升级brew + vim + tmux为我解决了这个问题:

brew update
brew upgrade vim
brew upgrade tmux
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 我不是在使用Neovim,但希望无论如何这都会有所帮助
  • 这可能需要一段时间,具体取决于您的机器速度
  • 当我为我做了这个brew升级ruby并抱怨它不会覆盖现有的符号链接,所以我不得不手动运行: brew link --overwrite ruby
  • Tmux在升级后抱怨了以下设置.我刚评论过:# set-option -g status-utf8 on
  • 我收到了关于需要新的xcode工具的警告,所以我运行了以下内容并接受了GUI提示:( xcode-select --install事后看来,这可能搞砸了我的react-native安装:/.买家要小心)
  • 当第一次运行brew updatebrew时抱怨它没有写访问权限,/usr/local所以我自己就成了/usr/local NON-RECURSIVE的拥有者.更新brew后告诉我,我可以将所有者改回root:wheel.