我正在使用带有 vi 键的 tmux,只要您选择一行文本,或者如果您只有一个窗口,复制/粘贴就可以正常工作。当我想选择一个文本块(多行,但不是全宽)时,我遇到了麻烦。如果我打开了多个 vim 窗口,那么它将从所有窗口中选择文本,而我需要的是仅从一个窗口中选择文本。也就是说,就像 vim 中的视觉选择一样。
这是可能的吗?
小智 58
确保检查这篇文章的底部是否需要进入 .tmux.conf 文件的必要绑定。
我假设您的前缀键是 Ca:
要在 tmux 中对从 (1,1) 到 (2,2) 的文本进行矩形选择:
请注意,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.
Run Code Online (Sandbox Code Playgroud)
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.
Run Code Online (Sandbox Code Playgroud)
解除默认矩形切换绑定很重要:
unbind-key -t vi-copy v # Prior to version 2.4
unbind-key -T copy-mode-vi v
Run Code Online (Sandbox Code Playgroud)
否则新的“Cv”绑定不起作用。
注意:要拥有一个.tmux.conf跨版本工作的单曲,请参阅此问题。
Lar*_*off 17
您可以像在 vi 中一样选择一个可视块——v在开始选择之前输入。在联机帮助页中,这称为“矩形切换”。
her*_*ere 12
正如 Lars 指出的那样,v实际上通过在矩形模式和全线选择模式之间切换来满足您的要求。 space和enter分别用于开始一个新的选择并复制它。使用您的前缀进入复制模式,然后使用以下命令将[您复制的选择粘贴到任何 tmux 窗口中]
这也让我感到困惑,因为v在 vim 中的功能space与在 tmux 中的功能一样,以开始选择。
:list-keys -t vi-copy在 tmux 中发出将在复制模式下显示完整的命令表。
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
Run Code Online (Sandbox Code Playgroud)
由于其他答案都没有给出问题的最佳解决方案,因此我并没有超越死灵法术。
有一种方法可以让块选择以与 Vim 中相同的方式工作,而无需按空格。只是一个简单的 Ctrl-V,在您的肌肉记忆中根深蒂固。
它需要编辑您的 .tmux.conf (但使用 vi-mode 已经这样做了),我不确定它是否适用于 tmux < 2.4。
将此添加到您的 .tmux.conf 以复制 Vim 选择和 yank 绑定:
# set vi-mode
set-window-option -g mode-keys vi
# keybindings
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle \; send -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
# comment the preceding line and uncomment the following to yank to X clipboard
# bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"
Run Code Online (Sandbox Code Playgroud)
进入选择模式并导航到要开始选择的位置。现在v开始常规(逐字符,逐行)选择,<C-v>开始块选择和V(shift-v)开始行选择。无论选择的类型如何,都会y猛拉到 tmux 粘贴缓冲区(或 X 剪贴板;请参阅上面的代码注释)。
和 Vim 一样。
| 归档时间: |
|
| 查看次数: |
45266 次 |
| 最近记录: |