如何增加 tmux 中的复制缓冲区大小?

如何增加 tmux 中的复制缓冲区大小?

问题:如何增加 tmux 中的复制缓冲区大小?

数据:当我运行以下命令时......

$ for i in {1..1000}; do echo "$i"; done  

...并在 tmux 中突出显示整个输出(使用鼠标或键盘命令),以下是发送到系统剪贴板的内容:

1  
2  
3  
4  
--snip--
205  
206  
207  
208  
20   (<--- Notice where it cuts off)

分类:
- 当我退出 tmux 并关闭服务器、移动 tmux.conf 并使用默认 conf 文件启动新的 tmux 实例时,这种情况仍然存在。(必须重新学习默认键,这很困难 X_X)。
- 在使用完全相同的软件(如下所列)的另一台机器上(同样,使用默认 tmux 设置)也仍然存在。
- 默认 Terminal.app 中也仍然存在(同样,使用默认 tmux 设置)

系统
OS X 10.9.2
tmux 1.9a (自制) + 重新连接到用户命名空间 (自制)
iTerm Build 1.0.0.20140421

答案1

看完之后本文我了解到了新的copy-pipe命令已添加到 tmux 1.8

copy-pipe模式命令复制选择并将选择传送给命令。

更改复制模式绑定以使用新copy-pipe命令可以为我解决该问题:

# (from my tmux.conf)...
# Change copy / paste bindings to work like Vim
# Note this used to use `copy-selection` but that has been replaced
# with `copy-pipe` as of Tmux 1.8. See: https://goo.gl/ea3CRO
bind Escape copy-mode
bind p paste-buffer
bind-key -t vi-copy v begin-selection
bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy"

# Update default binding of `Enter` to also use copy-pipe
unbind -t vi-copy Enter
bind-key -t vi-copy Enter copy-pipe "reattach-to-user-namespace pbcopy"

答案2

问题解决了。几点建议。

  1. reattach-to-user-namespace不是必需的。只是pbcopy
  2. 经过测试tmux 2.3
  3. 诀窍是让MouseDragEnd1Pane事件触发pbcopy
  4. 使用iTerm2意味着鼠标支持才有效。仅从tmux v2.1set-option -g mouse on必需的。
  5. 您不需要 vi-copy 模式。只需确保绑定MouseDragEnd1Pane如下

这是我的脱衣舞~/.tmux.conf

# --------------------------------
# Turn on the Mouse Support - defaults seem good
# --------------------------------
set-option -g mouse on
# when we finish "selecting" send it to pbcopy (and into the OS X buffer)
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "pbcopy"

# --------------------------------
# Use vim keybindings in copy mode
# --------------------------------
setw -g mode-keys vi

# Setup 'v' to begin selection as in Vim
# You enter with C-b [ and then "v" - then normal keypresses to "highlight"
# .. [Enter] or "y" will select (because of below bindings)
bind-key -t vi-copy v begin-selection
#
# 'y'ank will send the selection to the OS X buffer
bind-key -t vi-copy y            copy-pipe "pbcopy"

# --------------------------------
# Update default binding of `Enter` to also use Send the selection to OS X buffer
# --------------------------------
unbind   -t vi-copy Enter
bind-key -t vi-copy Enter        copy-pipe "pbcopy"

# selecting can now be done with
#  hilighting with a mouse
#  selecting with C-b [ v .. now vi mode for selecting text
#
# pasting  can now be done with
# ⌘ - V
# C-b ]

答案3

这似乎对我有用:

https://stackoverflow.com/a/24973743/35003

我在使用 tmux 1.8、iTerm2 和 reattach-to-user-namespace 时遇到了同样的问题。我遇到了一个可以修复此问题的 tmux 配置绑定:它明确将最后一个缓冲区选择复制到剪贴板:

bind-key q 运行“tmux save-buffer - | 重新连接到用户命名空间 pbcopy”

将其放入您的 ~/.tmux.conf,然后 Cb q 会在选择后将所有内容拉入您的剪贴板。

相关内容