CTRL我注意到,很多时候当我通过+从命令行进行反向历史搜索时r,如果我想编辑命令,有时当我按箭头键或输入CTRL+a或CTRL+时,光标会跳转到错误的位置e。它跳转到的特定位置似乎是一个偏移量,等于我在 中设置的命令行提示符的大小PS1
。
这会造成困难,因为光标的实际位置与屏幕上呈现的位置不同;对命令的未来编辑将被呈现为好像光标在它跳转到的位置,但实际命令保留了正确的位置而没有任何跳转。
有谁知道这是什么原因造成的或者如何解决它?
编辑:如果我在末尾添加换行符,PS1
问题似乎就消失了。但是,我更喜欢在提示符的同一行上输入命令。
答案1
这通常是由历史记录中超过 1 行的命令引起的。当您从历史记录中选择一个较短的项目时,它似乎没有考虑提示符的宽度来重新呈现命令行,因此该长命令之后的所有内容都是错误的。
我发现的简单解决方案是按下 home 键,输入“echo”,然后按回车键。然后调用最后一个命令并从那里进行编辑。(首先删除 echo。:)
另请参见下面 alexander-somov 的回答,其中找到了一种解决此问题最常见原因的方法。
答案2
也许您在 PS1 中有一些未包含在 \[ 和 \] 中的非打印转义序列。
确保将它们全部像这样括起来:
\[\e[33m\]\w\[\e[31m\] $ \[\e[0m\]