2011-10-31 42 views

回答

14

如果一切配置正确,应该是因为把这个在您的.tmux.conf简单:

set-option -g prefix Home 

注意:除非你手动“源”你.tmux.conf,更改文件只需要影响时tmux服务器重新启动。要么干净地退出所有窗格,窗口(从而关闭所有会话并让服务器退出),要么使用tmux kill-server,然后重新开始一个会话。

此,如果当您连接到您的TMUX会议(终端仿真器发送对于生效的TERM值terminfo数据库条目的khome场相匹配的转义序列只会工作,即TERM“外” tmux)。

生成转义序列的首页

您可以验证通过键入主页键(新行)到cat -v你的终端模拟器发送转义序列(可以中止控制 - Ç一旦它显示你的序列)。常见的反应可能是^[[1~^[OH

的首页

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

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

固定一个生成/预期不匹配

如果您的终端仿真器所产生的转义序列不会为您的申报TERM价值khome条目匹配,再就是几件事情可以做尝试解决问题:

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

例如,如果你的终端模拟器不适用于主页发送的序列,但可以配置一个,并为您的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来检查terminfo项的TMUX的运行副本。

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

+0

谢谢,这是一吨的有用的信息有! – secondplanet

+0

你能解释得更彻底吗?猫-v显示,我的最终关键是^ [F和tput的DMOZ目录给我^ [作者: –

+0

@RosePerrone:为的xterm式终端,'^ [F'是结束的“正常模式”序列,和'^[OF'是End的“应用程序模式”序列;这些模式之间的切换由控制序列完成(通常交互式或全屏幕程序在它们处于活动状态时将切换到应用程序模式)。传统上,'kend'条目记录了“应用程序模式”序列,这就是您所看到的。如果TERM条目具有'smkx',则可以使用'tput smkx'切换到ncurses的“键盘传输”模式,这通常是“应用程序模式”的超集。 –