首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >stty设置是病理改变的。

stty设置是病理改变的。
EN

Unix & Linux用户
提问于 2015-04-19 00:34:57
回答 1查看 1K关注 0票数 4

我刚安装了一台新计算机,和往常一样,为了使删除键正常工作,我不得不更改xterm中的设置。(Ctrl发送^H,backspace发送^?,delete发送^[[3~.当然,这是客观上正确的做法。虽然默认的xterm设置是有问题的,但是在这个设置中一切都很好,至少在xterm的末尾是这样的。

问题是,由于某种原因,xterm中的stty设置总是设置为erase = ^H。除了在非读行标准输入中造成混乱之外,这还使得tmux开始在其窗口中默默地将^H转换为^?,这使得emacs之类的事情变得相当痛苦。

我不知道为什么stty是这样设置的。这不是默认设置;仅键入stty以显示与默认的差异将显示erase = ^H;行,手动键入stty erase ^?将移除这一行。(这也解决了stdin和tmux的问题。)然而,在我启动的每一个终端中输入这个都很乏味,虽然我可以把它放在.bashrc或其他什么地方,但我觉得这不是正确的方法。

是什么原因导致stty使用这个不正确的、非默认的设置?我怎么才能让它停下来?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2015-04-19 02:53:17

做这件事有很多方法。你提到的方式可能是一个。xterm是一个运行另一个程序的程序--它将另一个程序封装在pty中--通常是您的shell --并将输入输入传递给包装好的程序。关于伪终端的问题是,它们只是模拟的设备,所以xterm会猜测您最终将在其上输入的设备。当然,你可以说得更具体些。xterm授予各种环境变量--更好的是,xresources。

来自man xterm

  • ttyModes ( TtyModes)
    • 指定一个字符串,其中包含终端设置关键字及其可能绑定到的字符。允许关键字包括: brk,dsusp,eof,eol,eol2,擦除,erase2,刷新,intr,杀死,lnext,退出,rprnt,启动,状态,停止,susp,swtch和weras。控制字符可指定为^char (例如,^c^u),^?可用于指示删除(127)。使用^-表示undef。使用\034表示^\,因为X资源中的文字反斜杠将转义下一个字符。
    • 这对于覆盖默认终端设置非常有用,而不必每次启动stty时都执行xterm。但是,请注意,给定主机上的stty程序可能使用不同的关键字;xterm's表是内置的。
    • 如果ttyModes资源指定擦除值,则重写ptyInitialErase资源设置,即xterm初始化终端以匹配该值。
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/197161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档