我使用 tmux 和 vi 键,只要您选择一行文本,或者只有一个窗口,复制/粘贴就可以正常工作。当我想选择一段文本(多行,但不是全宽)时,我就会遇到麻烦。如果我打开了多个 vim 窗口,那么它会从所有窗口中选择文本,而我需要的只是从一个窗口中选择文本。也就是说,就像 vim 中的可视选择一样。
这可能吗?
答案1
请务必检查此帖子的底部,了解需要放入 .tmux.conf 文件的必要绑定。
我假设你的前缀键是 Ca:
- Ca 表示:按Ctrl+A
- Ca [ 表示:按Ctrl+A然后按[
做一个矩形选择在 tmux 中从 (1,1) 到 (2,2) 的文本:
- 进入复印模式:Ca[
- 移动行的中间位置
- 按简历
- 新闻空间
- 使用 jkhl 移动选择
- 对选择满意后,按 Enter 键(如果在配置文件中有绑定,则按 y 键)。
- 您可以通过以下方式粘贴最新的复制缓冲区:Ca ]
请注意,space选择矩形时必须按下。
要像平常一样选择行,请进入复制模式,按 v,用 jkhl 键选择,然后按 y。
我的 .tmux.conf 中有这些绑定:
setw -g mode-keys vi
bind-key -t vi-copy 'v' begin-selection # Begin selection in copy mode.
bind-key -t vi-copy 'C-v' rectangle-toggle # Begin selection in copy mode.
bind-key -t vi-copy 'y' copy-selection # Yank selection in copy mode.
后版本 2.4:
setw -g mode-keys vi
bind-key -T copy-mode-vi 'v' send -X begin-selection # Begin selection in copy mode.
bind-key -T copy-mode-vi 'C-v' send -X rectangle-toggle # Begin selection in copy mode.
bind-key -T copy-mode-vi 'y' send -X copy-selection # Yank selection in copy mode.
取消默认的矩形切换绑定非常重要:
unbind-key -t vi-copy v # Prior to version 2.4
unbind-key -T copy-mode-vi v
否则新的“Cv”绑定不起作用。
.tmux.conf
注意:要获得适用于不同版本的单一版本,请参阅这个问题。
答案2
您可以像在 vi 中一样选择一个可视块 -v
在开始选择之前键入。在手册页中,这称为“矩形切换”。
答案3
正如 Lars 指出的那样,v
实际上是通过在矩形模式和全行选择模式之间切换来实现您的要求。 space
和enter
分别用于开始新的选择并复制它。 使用您的前缀进入复制模式,然后[
使用 粘贴您复制的选择到任何 tmux 窗口中]
这也让我感到困惑,因为v
vim 中的功能与space
tmux 中的功能一样,可以开始选择。
在 tmux 中发出:list-keys -T copy-mode-vi
将在复制模式下显示完整的命令表。
bind-key -t vi-copy C-b page-up
bind-key -t vi-copy C-c cancel
bind-key -t vi-copy C-e scroll-down
bind-key -t vi-copy C-f page-down
bind-key -t vi-copy C-h cursor-left
bind-key -t vi-copy Enter copy-selection
bind-key -t vi-copy C-y scroll-up
bind-key -t vi-copy Escape clear-selection
bind-key -t vi-copy Space begin-selection
bind-key -t vi-copy $ end-of-line
bind-key -t vi-copy , jump-reverse
bind-key -t vi-copy / search-forward
bind-key -t vi-copy 0 start-of-line
bind-key -t vi-copy 1 start-number-prefix
bind-key -t vi-copy 2 start-number-prefix
bind-key -t vi-copy 3 start-number-prefix
bind-key -t vi-copy 4 start-number-prefix
bind-key -t vi-copy 5 start-number-prefix
bind-key -t vi-copy 6 start-number-prefix
bind-key -t vi-copy 7 start-number-prefix
bind-key -t vi-copy 8 start-number-prefix
bind-key -t vi-copy 9 start-number-prefix
bind-key -t vi-copy : goto-line
bind-key -t vi-copy ; jump-again
bind-key -t vi-copy ? search-backward
bind-key -t vi-copy B previous-space
bind-key -t vi-copy D copy-end-of-line
bind-key -t vi-copy E next-space-end
bind-key -t vi-copy F jump-backward
bind-key -t vi-copy G history-bottom
bind-key -t vi-copy H top-line
bind-key -t vi-copy J scroll-down
bind-key -t vi-copy K scroll-up
bind-key -t vi-copy L bottom-line
bind-key -t vi-copy M middle-line
bind-key -t vi-copy N search-reverse
bind-key -t vi-copy T jump-to-backward
bind-key -t vi-copy W next-space
bind-key -t vi-copy ^ back-to-indentation
bind-key -t vi-copy b previous-word
bind-key -t vi-copy e next-word-end
bind-key -t vi-copy f jump-forward
bind-key -t vi-copy g history-top
bind-key -t vi-copy h cursor-left
bind-key -t vi-copy j cursor-down
bind-key -t vi-copy k cursor-up
bind-key -t vi-copy l cursor-right
bind-key -t vi-copy n search-again
bind-key -t vi-copy q cancel
bind-key -t vi-copy t jump-to-forward
bind-key -t vi-copy v rectangle-toggle
bind-key -t vi-copy w next-word
bind-key -t vi-copy BSpace cursor-left
bind-key -t vi-copy NPage page-down
bind-key -t vi-copy PPage page-up
bind-key -t vi-copy Up cursor-up
bind-key -t vi-copy Down cursor-down
bind-key -t vi-copy Left cursor-left
bind-key -t vi-copy Right cursor-right
bind-key -t vi-copy C-Up scroll-up
bind-key -t vi-copy C-Down scroll-down
答案4
这是针对 macOS 用户的解决方案
- prefix+[进入复印模式
- 使用箭头键导航到文本选择的开始或结束
- 按空格键开始选择,有时control+space
- 使用箭头键移动到要复制的文本的另一端
- 按下return可将选定的文本复制到
tmux
剪贴板,有时control+w 或者 esc+w 或者 alt+w - 在同一个会话中,使用+
tmux
粘贴,粘贴到,使用+prefix]vim
prefix]vim
插入模式