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

时间:2016-09-22 17:24:01

标签: vim tmux macos-sierra neovim

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

以下是行为:

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

每当我在tmux会话中使用vim中的剪贴板时,我都会收到以下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

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

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

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

3 个答案:

答案 0 :(得分: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}"

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

set clipboard=unnamed

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

答案 1 :(得分:9)

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

<Window.Resources>
    <ResourceDictionary>            
        ...
        <DataTemplate DataType="{x:Type sys:String}">
            <TextBlock Background="ForestGreen" Text="{Binding .}"/>
        </DataTemplate>

        <DataTemplate DataType="{x:Type local:CustomObject}">
            <StackPanel Orientation="Horizontal">
                <TextBlock Background="Red" Text="{Binding firstString}"/>
                <TextBlock Background="Red" Text="{Binding secondString}"/>
            </StackPanel>
        </DataTemplate>
    </ResourceDictionary>
</Window.Resources>
<ItemsControl>
... 
 <ItemsControl.ItemTemplate>
    <DataTemplate>
        <ContentControl Content="{Binding .}"/>
    </DataTemplate>
 </ItemsControl.ItemTemplate>
 ...
</ItemsControl>

备注:

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

答案 2 :(得分:1)

升级到塞拉利昂后,我也看到了同样的情况。在我的情况下,它源于安装了YankRing插件。

将以下内容添加到我的.vimrc中为我修复了它:

$("#scroll").on("change", function() {
    variable= $("#scroll").val();
}