Henry's Notebook
Many strange things
搜索
菜单
导航
首页
最近更改
随机页面
帮助
Henry's Home
个人资料
个人资料
创建账户
登录
消息
目前您没有通知。请访问您的
讨论页
以查看过去消息。
页面工具
内容页面
讨论
查看源代码
历史
首页
»
页面s
查看“TERM”的源代码
←
TERM
页面上次由
HenryHu
编辑于12年前
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:emailconfirmed
您可以查看与复制此页面的源代码。
TERM变量,terminfo 与 termcap == TERM == 一个环境变量,表示当前用那个terminfo/termcap == termcap == 这东西已经过时了 == terminfo == 某人重写termcap之后的结果。 其实是一个数据库,用$TERM作为索引进去找。每个项目描述了某种terminal,例如rxvt-unicode,screen-256color之类。 在linux下,在/usr/share/terminfo/?/里面有所有的数据。文件名就是key。 不过这个东西是二进制的。幸好有东西可以编解码。 * 反编译: 用[[infocmp]] * 编译: 用[[tic]] 转成文本形式之后,这个的内容是一堆a=b形式的键-值对,或者就一个键名,或者a#b,逗号分隔。 其中,键名表示了某种功能/能力。如果只有一个键名,那就是有一种能力。如果有值,那就是输出那堆值之后,能够使用的某种能力,或者term拿到那堆值之后,说明你按了某个键。 如果是a#b,那就是某个属性和对应值。 '''能力列表参见terminfo manpage。Capname那列就是能力名字。''' === 测试是否有能力 === tput <capname> 如果返回值是0,那就是有这个能力。返回1,就木有那个能力。返回4,说明你打错能力名了。 例如 tput xenl 我这儿返回0,说明我的term在80行之后忽略换行(啥?)。类似的还有bce,bw,……一堆。 === 获得属性值 === tput <capname> 输出的就是属性值。 例如 tput colors 就会得到当前term支持的颜色数量。例如在我这儿是256。 类似的有cols(列数), lines(行数),…… === 使用能力 === tput <capname> [<param1>, ...] 比如说: tput smul; echo xxxx; tput enul 就是使用了进入下划线模式(smul)和退出下划线模式(enul)。你可以看见xxxx是带下划线的。 类似的有bold(粗体), cud, cuf, ... * cub, cud, cuf, cuu: 左移$1列,下移$1行,右移$1列,上移$1行。 * cub1, cud1, cuf1, cuu1: 以上命令的1-简化版本。 * cup: 直接跳转到$1行$1列 * sc, rc: 保存,恢复当前光标位置(这不是栈……) * civis, cvvis, cnorm: 隐藏光标,突出光标(very visible!), 恢复正常光标 * blink: 闪烁模式 * clear: 清屏 * dl: 删$1行。 * setab, setaf: 设置背景色,设置前景色。 * rev: 反色。 === 获得按键说明 === 这个其实是给各种库用的。比如你拿到一堆转义序列,你不知道是哪个键。这时候,看terminfo就能知道。 例如,你看infocmp结果里,有khome=xxx。那就是说,拿到xxx这个序列,就是按了home键。 所以有时候你登录到远端主机,发现home/end不好用,就是这个的关系。一般是因为,远端的主机没有你的terminal的terminfo数据。这样,他就不知道home/end对应的序列是啥了。这样,你按了home/end他也不懂。 解决方法也很简单,只要把你登录过去看见的$TERM对应的terminfo文件复制到远端的正确位置,就行了。对面有了terminfo数据,也就能理解这个序列代表哪个键了。
返回至
TERM
。