有没有办法在 ~/.tmux.conf 中做到这一点?
1 回答
如果其他一切都配置正确,它应该像把它放在你的一样简单.tmux.conf
:
set-option -g prefix Home
注意:除非您手动“获取”您.tmux.conf
的 . 文件,否则对文件的更改只会在tmux 服务器重新启动时生效。要么干净地退出所有窗格、窗口(从而关闭所有会话并让服务器退出),要么使用tmux kill-server
,然后开始一个新会话。
这仅在您的终端仿真器发送的转义序列与您连接到tmuxkhome
会话时有效值的 terminfo 数据库条目的字段匹配时才有效(即“外部” tmux)。TERM
TERM
为家庭生成的转义序列
您可以通过键入 Home 键(和换行符)来验证终端仿真器发送的转义序列(您可以使用-一旦它向您显示序列)cat -v
中止cat 。常见的响应可能是或。ControlC^[[1~
^[OH
家庭的预期转义序列
环境变量告诉基于 terminfo的TERM
程序(如tmux)您的终端仿真器(假设)理解和生成什么转义序列。Home 键生成的转义序列存储在该khome
字段中。您可以使用tput或infocmp来提取字段的值(两者都使用当前值,TERM
除非它们被赋予了一个覆盖终端声明)。
tput khome | cat -v ; echo
infocmp -1 | grep -F khome
修复生成的/预期的不匹配
khome
如果您的终端仿真器生成的转义序列与您声明的值的条目不匹配TERM
,那么可以采取一些措施来尝试解决问题:
- 重新配置您的终端模拟器。
这可能涉及使用不同的程序,选择不同的仿真,或者只是(重新)定义它在您按下 Home 键时发送的序列。 TERM
选择一个与您的终端仿真器发送和理解的内容更匹配的新值。- 调整 terminfo 数据库条目以匹配您的终端仿真。
您可以使用infocmp来提取现有的 terminfo 条目,并使用tic来编译您修改的条目。 - 告诉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服务器。