在我的机器上的设置中stty -a
,有诸如erase = ^?; kill = ^U;
.手册页报告说
erase CHAR
CHAR will erase the last character typed
kill CHAR
CHAR will erase the current line
但我发现相应的键盘快捷键实际上可以做同样的事情,即当我boo
在终端输入然后按<ctrl>+U
或 时,<ctrl>+?
在两种情况下该行都会被完全删除。
那么为什么擦除字符不只擦除最后一个字符呢?
答案1
我刚刚在 shell 提示符下测试了这一点并得到了类似的结果。然而,仔细检查就会发现错误。
ctrl+ /(您可能认为是 ctrl-?)实际上会生成 ctrl-_,它通常绑定到“撤消”。如果你想要ctrl-?你需要按ctrl+ shift+ ?。您可以通过输入ctrl+ v ctrl+来测试这一点/
请注意,stty 命令会影响“cooked”模式下的终端编辑,其中撤消键不起作用。所以我的猜测是,您正在使用像 bash 这样的 shell,它实现了自己的命令行编辑,这可能会遵循 stty 设置,但并非必须如此,并且还添加了许多更精美的编辑键。