终端 上一个 历史 命令 覆盖字符

终端 上一个 历史 命令 覆盖字符

我的终端 (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命令,它应该会把事情恢复到“正常”

相关内容