6

有没有办法在 ~/.tmux.conf 中做到这一点?

4

1 回答 1

15

如果其他一切都配置正确,它应该像把它放在你的一样简单.tmux.conf

set-option -g prefix Home

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

这仅在您的终端仿真器发送的转义序列与您连接到tmuxkhome会话时有效值的 terminfo 数据库条目的字段匹配时才有效(即“外部” tmux)。TERMTERM

为家庭生成的转义序列

您可以通过键入 Home 键(和换行符)来验证终端仿真器发送的转义序列(您可以使用-一旦它向您显示序列)cat -v中止cat 。常见的响应可能是或。ControlC^[[1~^[OH

家庭的预期转义序列

环境变量告诉基于 terminfo的TERM程序(如tmux)您的终端仿真器(假设)理解和生成什么转义序列。Home 键生成的转义序列存储在该khome字段中。您可以使用tputinfocmp来提取字段的值(两者都使用当前值,TERM除非它们被赋予了一个覆盖终端声明)。

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

修复生成的/预期的不匹配

khome如果您的终端仿真器生成的转义序列与您声明的值的条目不匹配TERM,那么可以采取一些措施来尝试解决问题:

  1. 重新配置您的终端模拟器。
    这可能涉及使用不同的程序,选择不同的仿真,或者只是(重新)定义它在您按下 Home 键时发送的序列。
  2. TERM选择一个与您的终端仿真器发送和理解的内容更匹配的新值。
  3. 调整 terminfo 数据库条目以匹配您的终端仿真。
    您可以使用infocmp来提取现有的 terminfo 条目,并使用tic来编译您修改的条目。
  4. 告诉tmux调整它的 terminfo 数据库条目的运行时副本。
    tmux提供了terminal-overrides可用于覆盖各种TERM值的单个 terminfo 字段的选项。

例如,如果您的终端仿真器没有为 Home 发送序列,但您可以配置一个,并且您的 terminfo 条目TERM没有khome字段,那么您可以告诉您的终端仿真器发送 ESC [ 1 ~,并使用termname:khome=\033[1~您的terminal-overrides值 (其中termname是与您的 TERM 值适当匹配的模式)。

例如在 .tmux.conf 中:

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

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

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

于 2011-11-02T04:30:49.453 回答