在 Tmux 复制模式下选择文本

Man*_*tas 93 vim tmux

我在 Vi 模式下运行 Tmux。复制模式下的类似 Vi 的导航工作正常。但是,我无法选择任何文本。v 和 V 都不会切换到类似 Vi 的文本选择模式。

我错过了什么?

顺便问一下,是否可以在复制模式下显示行号?

PS:我在 Mac OS 上使用 Z shell 运行 Tmux

jmh*_*ccr 114

简短回答:空格开始选择并输入副本。

为了将来参考,我从 tmux 手册页中得到了这个:

       Function                vi             emacs
       Back to indentation     ^              M-m
       Clear selection         Escape         C-g
       Copy selection          Enter          M-w
       Cursor down             j              Down
       Cursor left             h              Left
       Cursor right            l              Right
       Cursor to bottom line   L
       Cursor to middle line   M              M-r
       Cursor to top line      H              M-R
       Cursor up               k              Up
       Delete entire line      d              C-u
       Delete to end of line   D              C-k
       End of line             $              C-e
       Goto line               :              g
       Half page down          C-d            M-Down
       Half page up            C-u            M-Up
       Next page               C-f            Page down
       Next word               w              M-f
       Paste buffer            p              C-y
       Previous page           C-b            Page up
       Previous word           b              M-b
       Quit mode               q              Escape
       Scroll down             C-Down or J    C-Down
       Scroll up               C-Up or K      C-Up
       Search again            n              n
       Search backward         ?              C-r
       Search forward          /              C-s
       Start of line           0              C-a
       Start selection         Space          C-Space
       Transpose chars                        C-t
Run Code Online (Sandbox Code Playgroud)

更新:该tmux list-keys命令还将列出您拥有的任何自定义键绑定。

  • 附加提示,您可以检查当前使用的 tmux 复制模式:`tmux show-options -gw | grep 模式键`。如果您想永久更改模式,请将此行添加到“~/.tmux.conf”:“setw -g mode-keys vi”(或“emacs”)。然后运行 ​​`tmux source ~/.tmux.conf` 来应用它。 (4认同)

小智 90

您使用空格键作为选择的开始并输入作为结束。

复制:

  • Ctrlb[
  • Space
  • Enter

粘贴:

  • Ctrlb]

  • 这应该是答案。可以通过解释进入/离开复印模式来改进。 (2认同)
  • 很好,简短的回答。只是给 vi[m] 新手的一个提示:如果您使用的是模态编辑器或命令行,您将需要确保在尝试使用上述`粘贴之前**处于插入模式** Ctrl+b+]`。回想起来很明显,但让我来回几次,直到我穿上。 (2认同)

p11*_*00i 29

上游 (2.4+) tmux 更改了开始选择的绑定方式。要为 OP 要求使用-T和发送密钥的内容创建绑定-X

# Use v to trigger selection    
bind-key -T copy-mode-vi v send-keys -X begin-selection

# Use y to yank current selection
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
Run Code Online (Sandbox Code Playgroud)

  • `tmux` 升级破坏我的配置的频率比我想要的要多......:-( (2认同)

小智 28

您还可以通过添加以下内容来设置 .tmux.conf 文件:

bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection
Run Code Online (Sandbox Code Playgroud)

这将使 'v' 和 'y' 进入可视模式并复制,就像在 vim 中一样。

来源

  • 这些东西在较新的 Tmux 版本中发生了变化。现在是`bind-key -T copy-mode-vi ...` (11认同)
  • 请参阅上面的 https://superuser.com/a/1204738/48390,了解具有较新 Tmux 版本的最新解决方案 (2认同)

Pau*_*aul 5

我发现进入 vi 模式很容易成为我的瓶颈,我使用以下命令:

setw -g mode-keys vi
set-window-option -g mode-keys vi  
unbind [
bind-key -n F2 copy-mode
Run Code Online (Sandbox Code Playgroud)