我如何将HOME键绑定为tmux前缀?

时间:2011-10-31 20:37:01

标签: tmux

有没有办法在〜/ .tmux.conf中执行此操作?

1 个答案:

答案 0 :(得分:14)

如果其他所有内容都配置正确,则应该只需将其放入.tmux.conf

set-option -g prefix Home

注意:除非您手动“提取”.tmux.conf,否则只有在重新启动 tmux 服务器时才会对文件进行更改。干净地退出所有窗格,窗口(从而关闭所有会话并让服务器退出),或者使用tmux kill-server,然后开始一个全新的会话。

仅当您的终端仿真器发送的转义序列与您连接到 tmux <时生效的khome值的terminfo数据库条目的TERM字段匹配时才有效/ em> session(即{em> tmux 之外的TERM)。

为家庭生成转义序列

您可以通过在cat -v中键入Home键(和换行符)来验证终端模拟器发送的转义序列(您可以使用 Control cat > - C 一旦显示序列)。常见回复可能是^[[1~^[OH

家庭的预期转义序列

TERM环境变量告诉基于terminfo的程序(如 tmux )终端模拟器(据称)理解和生成的转义序列。 Home键生成的转义序列存储在khome字段中。您可以使用 tput infocmp 来提取字段的值(两者都使用当前的TERM,除非它们被赋予覆盖的终端声明。)

tput khome | cat -v ; echo
infocmp -1 | grep -F khome

修复生成/预期的不匹配

如果终端仿真器生成的转义序列与声明的khome值的TERM条目不匹配,那么可以通过以下几种方法来解决问题:< / p>

  1. 重新配置您的终端模拟器 这可能涉及使用不同的程序,选择不同的模拟,或者只是(重新)定义按Home键时发送的顺序。
  2. 选择一个与您的终端模拟器发送和理解的内容更匹配的新TERM值。
  3. 调整terminfo数据库条目以匹配您的终端仿真 您可以使用 infocmp 提取现有的terminfo条目和 tic 来编译修改后的条目。
  4. 告诉 tmux 调整terminfo数据库条目的运行时副本 tmux 提供了terminal-overrides选项,可用于覆盖各种TERM值的各个terminfo字段。
  5. 例如,如果您的终端模拟器没有为Home发送序列,但您可以配置一个序列,并且TERM的terminfo条目没有khome字段,那么您可以 告诉您的终端模拟器发送ESC [ 1 ~,并使用termname:khome=\033[1~作为terminal-overrides值(其中termname是适当的模式匹配您的TERM值。)

    E.g。在.tmux.conf中:

    set-option -g terminal-overrides "xterm-color:khome=\033[1~"
    

    您可以使用tmux server-info检查 tmux 的terminfo条目的运行时副本。

    注意:如上所述(prefix更改),让此更改生效的最简单方法是重新启动 tmux 服务器。