当我使用 PuTTY 通过 SSH 协议连接到特定的 Linux 服务器,并尝试使用 nano 编辑器编辑文件时,“输入”不会更新显示。当我按 Enter 键插入另一个换行符时,以下行不会向下移动。但是,如果我保存文件并重新打开它,就会出现新的换行符。
我进一步发现这只发生在文件的前 3-4 行。
这个特定的服务器运行 CentOS 6。当我连接到不同的服务器时,我没有遇到同样的问题。
问题出在哪里以及如何解决?
运行infocmp $TERM
报告:
# Reconstructed via infocmp from file: /usr/share/terminfo/l/linux
linux|linux console,
am, bce, ccc, eo, mir, msgr, xenl, xon,
colors#8, it#8, ncv#18, pairs#64,
acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l\E[?1c,
clear=\E[H\E[J, cnorm=\E[?25h\E[?0c, cr=^M,
csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, cvvis=\E[?25h\E[?8c,
dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
flash=\E[?5h\E[?5l$<200/>, home=\E[H, hpa=\E[%i%p1%dG,
ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
il1=\E[L, ind=^J,
initc=\E]P%p1%x%p2%{256}%*%{1000}%/%02x%p3%{256}%*%{1000}%/%02x%p4%{256}%*%{1000}%/%02x,
kb2=\E[G, kbs=\177, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, kf1=\E[[A,
kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
kf18=\E[32~, kf19=\E[33~, kf2=\E[[B, kf20=\E[34~,
kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~,
kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~,
kmous=\E[M, knp=\E[6~, kpp=\E[5~, kspd=^Z, nel=^M^J, oc=\E]R,
op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E[10m,
rmam=\E[?7l, rmir=\E[4l, rmpch=\E[10m, rmso=\E[27m,
rmul=\E[24m, rs1=\Ec\E]R, sc=\E7, setab=\E[4%p1%dm,
setaf=\E[3%p1%dm,
sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
sgr0=\E[0;10m, smacs=\E[11m, smam=\E[?7h, smir=\E[4h,
smpch=\E[11m, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?6c, u9=\E[c,
vpa=\E[%i%p1%dd,
答案1
我对运行“PuTTY over ssh”的语句有点困惑。我假设你的意思是使用 PuTTY 通过 SSH 协议连接到 Linux 服务器(抱歉,太啰嗦了,只是想澄清一下)。使用 PuTTY 时,TERM 应始终为 xterm,因为 PuTTY(以及许多其他图形终端)模拟旧的 xterm 终端仿真器。 TERM 值 Linux 意味着您直接在 Linux 文本控制台上运行,而不运行 X11/Xorg。 PuTTY 的 TERM 值通常在 PuTTY 配置 -> 连接 -> 数据 -> 终端类型字符串下设置。它应该始终设置为 xterm。另一种可能性是,当您登录到故障服务器时,.bashrc、.profile、.cshrc 等登录脚本正在设置 TERM。如果 TERM 仍设置为 Linux,请尝试在命令行中运行以下命令:
export TERM=xterm
如果这解决了 nano 的问题,您可能必须使用登录脚本来追踪它的设置。登录脚本永远不必设置 TERM,因为这通常由 getty/sshd 提前处理。
答案2
我通过将 PuTTY 中保存的“问题”服务器会话与“工作”服务器会话进行比较,发现了问题。在终端仿真选项下,我选中了“DEC Origin Mode最初打开”。取消选中此选项解决了问题。