在 Synology (DSM6) 上使用屏幕:"Cannot find termcap entry for 'xterm-256color"
Using screen on Synology (DSM6): "Cannot find termcap entry for 'xterm-256color"
在 Synology (DSM6) 上使用屏幕时出现错误
Cannot find termcap entry for 'xterm-256color'
当我输入 screen
.
我知道这个问题的快速修复 Unix screen utility error: Cannot find termcap entry for 'xterm-256color'。
所以 TERM=xterm screen
确实有效并启动了 screen
.
但我想在我的机器上将 TERM
设置为不同的值,因此我可以只键入 screen
。
我可以选择屏幕使用的颜色模式并将其设置在某个地方吗?
screen
过滤掉它不支持的转义序列。它不支持更改颜色值的 xterm 样式转义序列,但仅使用终端的预定义调色板。
如果你这样做
infocmp screen-256color xterm-256color
您可能会注意到一些差异。处理颜色值变化的是 initc
。 (使用 setaf
和 setab
从调色板中选择给定的颜色)。
警告消息是因为(显然)您的机器没有安装 xterm-256color
的终端描述,例如,如果您通过 ssh 连接到机器并且它从本地机器获取 TERM
。 screen
想知道什么 TERM
适用于 外部 ,以帮助它转换为它的 内部 (TERM=screen
).快速阅读文档和源代码表明,虽然它有几个功能用于 amending in/out TERM
之间的转换,以及选择特定的 inside-TERM , 没有用于覆盖环境变量 TERM
.
的 .screenrc
设置
这是指向 relevant chunk of code in screen
:
的指针
if ((attach_term = getenv("TERM")) == 0 || *attach_term == 0)
Panic(0, "Please set a terminal type.");
if (strlen(attach_term) > MAXTERMLEN)
Panic(0, "$TERM too long - sorry.");
GetTTY(0, &attach_Mode);
确保设置 TERM
的位置,以及指向 it checks if TERM
corresponds to an actual terminal description:
的指针(向下几个级别)
if (*D_termname == 0 || e_tgetent(tbuf, D_termname) != 1) {
Msg(0, "Cannot find terminfo entry for '%s'.", D_termname);
return -1;
}
所以...如果你只想 运行 "screen",你可以创建一个 shell 别名,或者简单的脚本来设置 TERM
现在。
使用 .bashrc 您可以将 TERM 设置回工作版本。我的问题是 screen.xterm-256color 不存在。
# ~/.screenrc
# Fix screen and vim
# "E437: terminal capability "cm" required"
if [[ $TERM = 'screen.xterm-256color' ]]; then
export TERM=xterm-256color
fi
要使 .bashrc 更改在 screen 中生效,您需要告诉 screen 将每个终端视为一个新终端 shell
#~/.screenrc
# Treat all new screen tabs as new shells
shell -$SHELL
在 Synology (DSM6) 上使用屏幕时出现错误
Cannot find termcap entry for 'xterm-256color'
当我输入 screen
.
我知道这个问题的快速修复 Unix screen utility error: Cannot find termcap entry for 'xterm-256color'。
所以 TERM=xterm screen
确实有效并启动了 screen
.
但我想在我的机器上将 TERM
设置为不同的值,因此我可以只键入 screen
。
我可以选择屏幕使用的颜色模式并将其设置在某个地方吗?
screen
过滤掉它不支持的转义序列。它不支持更改颜色值的 xterm 样式转义序列,但仅使用终端的预定义调色板。
如果你这样做
infocmp screen-256color xterm-256color
您可能会注意到一些差异。处理颜色值变化的是 initc
。 (使用 setaf
和 setab
从调色板中选择给定的颜色)。
警告消息是因为(显然)您的机器没有安装 xterm-256color
的终端描述,例如,如果您通过 ssh 连接到机器并且它从本地机器获取 TERM
。 screen
想知道什么 TERM
适用于 外部 ,以帮助它转换为它的 内部 (TERM=screen
).快速阅读文档和源代码表明,虽然它有几个功能用于 amending in/out TERM
之间的转换,以及选择特定的 inside-TERM , 没有用于覆盖环境变量 TERM
.
.screenrc
设置
这是指向 relevant chunk of code in screen
:
if ((attach_term = getenv("TERM")) == 0 || *attach_term == 0)
Panic(0, "Please set a terminal type.");
if (strlen(attach_term) > MAXTERMLEN)
Panic(0, "$TERM too long - sorry.");
GetTTY(0, &attach_Mode);
确保设置 TERM
的位置,以及指向 it checks if TERM
corresponds to an actual terminal description:
if (*D_termname == 0 || e_tgetent(tbuf, D_termname) != 1) {
Msg(0, "Cannot find terminfo entry for '%s'.", D_termname);
return -1;
}
所以...如果你只想 运行 "screen",你可以创建一个 shell 别名,或者简单的脚本来设置 TERM
现在。
使用 .bashrc 您可以将 TERM 设置回工作版本。我的问题是 screen.xterm-256color 不存在。
# ~/.screenrc
# Fix screen and vim
# "E437: terminal capability "cm" required"
if [[ $TERM = 'screen.xterm-256color' ]]; then
export TERM=xterm-256color
fi
要使 .bashrc 更改在 screen 中生效,您需要告诉 screen 将每个终端视为一个新终端 shell
#~/.screenrc
# Treat all new screen tabs as new shells
shell -$SHELL