了解 stty -a 的输出并将 ctrl backspace 更改为仅 backspace

了解 stty -a 的输出并将 ctrl backspace 更改为仅 backspace

我正在 bash shell 上工作索拉里斯环境,每当我输入“退格”时,它都会清除整行。

您对我有什么建议,可以将清除整行的退格键更改为仅一个字符,这是它的预期行为吗?

如何解释stty -a本地命令的输出西格温环境:

$ stty -a <br/>
speed 38400 baud; rows 34; columns 125; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = ^Z; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc ixany imaxbel
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -tostop echoctl echoke

答案1

根据您问题的措辞,我假设您正在使用 cygwin 访问 Solaris 计算机。

stty -a显示终端的所有当前设置。我不会逐一介绍。但您可以在 上了解每个人的作用手册页

但特别值得注意的是你的问题是erase = ^?;^?是个ASCII 控制字符对于DEL(删除)。您想要的是(退格键)的控制字符BS

您可以从命令行输入以下内容:

stty erase ^H

但请注意,^H是控制字符而不是^H。所以我相信您输入的方式如下:

Ctrl+vbackspace

这应该会被^H打印到屏幕上。

这应该将 的行为更改backspace为您想要的。但它只会持续当前会议。

根据这个 Oracle 博客/kernel/drv/options.conf,您可以通过打开并查找以下行来永久更改配置:

ttymodes="2502:1805:bd:8a3b:3:1c:7f:15:4:0:0:0:11:13:1a:19:12:f:17:16";

7f将更改为8永久重新映射backspaceDELBS这需要重新启动才能生效。

相关内容