我可以双击 select 并复制到 tmux 中吗?
Can I use double click to select and copy in tmux?
我正在学习使用 tmux,我发现当我在一个 tmux window 中时,双击 select 并且复制功能不再起作用。
我可以像在 iterm2 中一样使用双击 select 和复制吗?
我用谷歌搜索了一段时间,但没有找到简短而明确的答案。我已经在 tmux 配置文件中添加了 setw -g mode-mouse on
。
我找到了一种实现方法:双击时按住 option
键。
不知道 iterm2,但这可以在 tmux 3.0 或更高版本中工作
(在 Linux w/tmux 3.0 上测试,最后一个命令使用X11 xclip).
添加三次点击 select 并复制一行。
# Double LMB Select & Copy (Word)
bind-key -T copy-mode-vi DoubleClick1Pane \
select-pane \; \
send-keys -X select-word-no-clear \; \
send-keys -X copy-pipe-no-clear "xclip -in -sel primary"
bind-key -n DoubleClick1Pane \
select-pane \; \
copy-mode -M \; \
send-keys -X select-word \; \
send-keys -X copy-pipe-no-clear "xclip -in -sel primary"
# Triple LMB Select & Copy (Line)
bind-key -T copy-mode-vi TripleClick1Pane \
select-pane \; \
send-keys -X select-line \; \
send-keys -X copy-pipe-no-clear "xclip -in -sel primary"
bind-key -n TripleClick1Pane \
select-pane \; \
copy-mode -M \; \
send-keys -X select-line \; \
send-keys -X copy-pipe-no-clear "xclip -in -sel primary"
如果您不使用 copy-mode-vi
,请将其替换为 copy-mode
。
对于旧的 tmux 版本,请检查编辑历史。
在 Alacrity
中按住 Shift
允许像没有 tmux 一样进行复制。
基于@ideasman42 的回答。这是为 macos mojave 使用 tmux 2.8 和 pbcopy。
# Double LMB Select & Copy (Word)
bind-key -n DoubleClick1Pane \
select-pane \; \
copy-mode -M \; \
send-keys -X select-word \; \
run-shell "sleep .5s" \; \
send-keys -X copy-pipe-and-cancel "pbcopy"
bind-key -n DoubleClick1Pane \
select-pane \; \
copy-mode -M \; \
send-keys -X select-word \; \
run-shell "sleep .5s" \;
send-keys -X copy-pipe-and-cancel "pbcopy
我的版本选中单词,简单高亮显示,复制到系统缓冲区,然后取消copy-mode。
我已经想出了一个复制粘贴机制,它类似于您对终端的期望
我使用以下设置能够:
- select鼠标双击一个词
- select 鼠标三击动作的一行
- select局部行鼠标拖放动作
此解决方案将保持 selection 突出显示并将 selection 输出复制到两个剪贴板缓冲区(主缓冲区和剪贴板缓冲区)
当您点击 "Enter" 时退出并返回 shell
这里的优点是您可以在 tmux 之外使用鼠标中键作为 shift-insert 组合来粘贴内容,而它仍然是 selected。
另外当您退出回到 shell 时,您可以使用鼠标中键或按下 shift-insert 来粘贴内容
您对正常终端环境的所有期望
# Enable mouse control
setw -g mouse on
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter \
send -X cancel
# Drag and Drop Aelect & Copy (Selection)
bind-key -T copy-mode-vi MouseDragEnd1Pane \
send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
send-keys -X no-clear
# Double LMB Select & Copy (Word)
bind-key -T copy-mode-vi DoubleClick1Pane \
select-pane \; \
send-keys -X select-word \; \
send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
send-keys -X no-clear
bind-key -n DoubleClick1Pane \
select-pane \; \
copy-mode -M \; \
send-keys -X select-word \; \
send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
send-keys -X no-clear
# Triple LMB Select & Copy (Line)
bind-key -T copy-mode-vi TripleClick1Pane \
select-pane \; \
send-keys -X select-line \; \
send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
send-keys -X no-clear
bind-key -n TripleClick1Pane \
select-pane \; \
copy-mode -M \; \
send-keys -X select-line \; \
send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
send-keys -X no-clear
# Middle click to paste from the primary buffer
unbind-key MouseDown2Pane
bind-key -n MouseDown2Pane run "tmux set-buffer \"$(xclip -o)\"; tmux paste-buffer"
# Shift insert to paste from the clipboard
unbind-key S-IC
bind-key S-IC run "tmux set-buffer \"$(xclip -o -sel c)\"; tmux paste-buffer"
- 注意 1:为了使其在 ssh 会话中工作:-X 必须作为 ssh 的选项提供
- 注意 2:我使用的是 tmux 2.8 版
在 Kitty/Alacritty 上,我们在按住 Shift
的同时双击文本块。并且复制在本机和 tmux 中都可以正常工作。
我正在学习使用 tmux,我发现当我在一个 tmux window 中时,双击 select 并且复制功能不再起作用。
我可以像在 iterm2 中一样使用双击 select 和复制吗?
我用谷歌搜索了一段时间,但没有找到简短而明确的答案。我已经在 tmux 配置文件中添加了 setw -g mode-mouse on
。
我找到了一种实现方法:双击时按住 option
键。
不知道 iterm2,但这可以在 tmux 3.0 或更高版本中工作
(在 Linux w/tmux 3.0 上测试,最后一个命令使用X11 xclip).
添加三次点击 select 并复制一行。
# Double LMB Select & Copy (Word)
bind-key -T copy-mode-vi DoubleClick1Pane \
select-pane \; \
send-keys -X select-word-no-clear \; \
send-keys -X copy-pipe-no-clear "xclip -in -sel primary"
bind-key -n DoubleClick1Pane \
select-pane \; \
copy-mode -M \; \
send-keys -X select-word \; \
send-keys -X copy-pipe-no-clear "xclip -in -sel primary"
# Triple LMB Select & Copy (Line)
bind-key -T copy-mode-vi TripleClick1Pane \
select-pane \; \
send-keys -X select-line \; \
send-keys -X copy-pipe-no-clear "xclip -in -sel primary"
bind-key -n TripleClick1Pane \
select-pane \; \
copy-mode -M \; \
send-keys -X select-line \; \
send-keys -X copy-pipe-no-clear "xclip -in -sel primary"
如果您不使用 copy-mode-vi
,请将其替换为 copy-mode
。
对于旧的 tmux 版本,请检查编辑历史。
在 Alacrity
中按住 Shift
允许像没有 tmux 一样进行复制。
基于@ideasman42 的回答。这是为 macos mojave 使用 tmux 2.8 和 pbcopy。
# Double LMB Select & Copy (Word)
bind-key -n DoubleClick1Pane \
select-pane \; \
copy-mode -M \; \
send-keys -X select-word \; \
run-shell "sleep .5s" \; \
send-keys -X copy-pipe-and-cancel "pbcopy"
bind-key -n DoubleClick1Pane \
select-pane \; \
copy-mode -M \; \
send-keys -X select-word \; \
run-shell "sleep .5s" \;
send-keys -X copy-pipe-and-cancel "pbcopy
我的版本选中单词,简单高亮显示,复制到系统缓冲区,然后取消copy-mode。
我已经想出了一个复制粘贴机制,它类似于您对终端的期望
我使用以下设置能够:
- select鼠标双击一个词
- select 鼠标三击动作的一行
- select局部行鼠标拖放动作
此解决方案将保持 selection 突出显示并将 selection 输出复制到两个剪贴板缓冲区(主缓冲区和剪贴板缓冲区)
当您点击 "Enter" 时退出并返回 shell
这里的优点是您可以在 tmux 之外使用鼠标中键作为 shift-insert 组合来粘贴内容,而它仍然是 selected。
另外当您退出回到 shell 时,您可以使用鼠标中键或按下 shift-insert 来粘贴内容
您对正常终端环境的所有期望
# Enable mouse control
setw -g mouse on
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter \
send -X cancel
# Drag and Drop Aelect & Copy (Selection)
bind-key -T copy-mode-vi MouseDragEnd1Pane \
send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
send-keys -X no-clear
# Double LMB Select & Copy (Word)
bind-key -T copy-mode-vi DoubleClick1Pane \
select-pane \; \
send-keys -X select-word \; \
send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
send-keys -X no-clear
bind-key -n DoubleClick1Pane \
select-pane \; \
copy-mode -M \; \
send-keys -X select-word \; \
send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
send-keys -X no-clear
# Triple LMB Select & Copy (Line)
bind-key -T copy-mode-vi TripleClick1Pane \
select-pane \; \
send-keys -X select-line \; \
send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
send-keys -X no-clear
bind-key -n TripleClick1Pane \
select-pane \; \
copy-mode -M \; \
send-keys -X select-line \; \
send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
send-keys -X no-clear
# Middle click to paste from the primary buffer
unbind-key MouseDown2Pane
bind-key -n MouseDown2Pane run "tmux set-buffer \"$(xclip -o)\"; tmux paste-buffer"
# Shift insert to paste from the clipboard
unbind-key S-IC
bind-key S-IC run "tmux set-buffer \"$(xclip -o -sel c)\"; tmux paste-buffer"
- 注意 1:为了使其在 ssh 会话中工作:-X 必须作为 ssh 的选项提供
- 注意 2:我使用的是 tmux 2.8 版
在 Kitty/Alacritty 上,我们在按住 Shift
的同时双击文本块。并且复制在本机和 tmux 中都可以正常工作。