问题:如何增加 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
问题解决了。几点建议。
reattach-to-user-namespace
不是必需的。只是pbcopy
。- 经过测试
tmux 2.3
- 诀窍是让
MouseDragEnd1Pane
事件触发pbcopy
。 - 使用
iTerm2
意味着鼠标支持才有效。仅从tmux v2.1
是set-option -g mouse on
必需的。 - 您不需要 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 会在选择后将所有内容拉入您的剪贴板。