我的终端 (bash) 出现了奇怪的行为。当我按 CTRL-P,然后尝试在某个位置插入一些文本时,以下字符会被覆盖。实际上并没有被覆盖,但我的终端没有显示更改,这是带有 xfce 的 debian 7,我尝试了其他终端,效果相同。
我恢复了默认的 bashrc 和配置文件,但没有解决我的问题。
答案1
我认为你想了解一下 bash 帮助(man bash
或者GNU 的 BashRef.html) 关于命令行编辑和 Readline。有很多不同的命令可以编辑命令行,也可以使用文件进行更改inputrc
(默认~/.inputrc
)。以下是关于 READLINE 的剪辑:
READLINE
这是在使用交互式 shell 时处理读取输入的库,除非在 shell 调用时给出了 --noediting 选项。使用内置命令 read 的 -e 选项时也会使用行编辑。默认情况下,行编辑命令与 Emacs 的命令类似。还提供 vi 样式的行编辑界面。可以随时使用内置命令 set 的 -o emacs 或 -o vi 选项启用行编辑(请参阅下面的 SHELL 内建命令)。要在 shell 运行后关闭行编辑,请使用内置命令 set 的 +o emacs 或 +o vi 选项。
以下是“更改文本的命令”下有关覆盖的部分:
overwrite-mode
切换覆盖模式。使用显式正数值参数,切换到覆盖模式。使用显式非正数值参数,切换到插入模式。此命令仅影响 emacs 模式;vi 模式的覆盖方式不同。每次调用 readline() 都以插入模式启动。在覆盖模式下,与 self-insert 绑定的字符将替换光标处的文本,而不是将文本推到右侧。与 behind-delete-char 绑定的字符将光标前的字符替换为空格。默认情况下,此命令不受绑定。
我认为覆盖模式没有默认的键绑定。CTRL+p 是标准的上一个历史记录键,与此处的向上箭头相同(Linux Mint XFCE)。我不确定您的 bash 或inputrc
文件是如何设置的,但也许您处于 vi 模式而不是 Emacs 模式,或者您为覆盖模式设置了键?
也许它画的人物很有趣,您可以尝试跳转到上一个或下一个历史记录项(我会按向上然后向下键)然后它应该重新绘制线条。
或者也许你运行了一些命令,搞乱了你的终端显示(可能是终止程序),你可以尝试一个
reset
命令,它应该会把事情恢复到“正常”