tmux 复制模式下滚动页面的绑定键

Evg*_*nko 6 linux shell tmux

我希望能够映射 emacs 键(如C-v/ M-v)以在 tmux 中滚动而不是默认PgUp/ PgDown,这可能吗?目前无法从手册中看到这一点(如果有的话,抱歉,考虑到 tmux 使用的其他类似 emacs 的导航键绑定,这似乎是一件很自然的事情)

Chr*_*sen 10

默认情况下,emacs-copy键绑定表将所有 Cv、Page Down ( NPage) 和 Space 绑定到page-down以及 Mv 和 Page Up ( PPage) 都绑定到page-up

您可以使用tmux list-keys -t emacs-copy | grep -i page.

如果缺少这些绑定,您可以手动重新建立它们(例如在您的 中~/.tmux.conf):

bind-key -t emacs-copy C-v page-down
bind-key -t emacs-copy M-v page-up
Run Code Online (Sandbox Code Playgroud)

但由于这些是默认设置,您需要跟踪它们被更改/删除的位置,然后才能知道将上述命令放在哪里以使其有效(它们需要在修改绑定的其他任何内容之后出现)。

你确定你的mode-keys选项设置为emacs?它确实默认为emacs,但如果您设置了 VISUAL 环境变量并且它的值在其中,或者如果您没有设置 VISUAL 但确实设置了 EDITOR 并且它的值在其中,则tmux会将其设置为vi(连同status-keys).vivi

您可以mode-keys使用tmux show-options -g -w | grep mode-keys. 您可能还有一个每个窗口的mode-keys值(省略-g检查其值;-t如果您不能在窗口本身中运行命令,您可以用来定位另一个窗口)。

如果您想覆盖“自动检测”并始终使用emacs绑定表,那么您可以将这些行放在您的~/.tmux.conf

set-option -g status-keys emacs
set-option -gw mode-keys emacs
Run Code Online (Sandbox Code Playgroud)

“has viin it” 测试实际上更像是“vi出现在最后一个之后/(或任何地方,如果/没有出现在值中)”。这意味着像这样的值/opt/vital/bin/emacs不会算作vi(尽管viin vital)。