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