我在bash
.如果全部以下说法正确的是...
- 我的(单行)提示特别长。
- 终端窗口相对较窄。
- 我按 Ctrl+C 退出上一个进程,因此它
^C
显示在该行的左侧。 - 我正在编辑的命令换行到下一行。
……然后编辑就搞砸了。我最终替换了与我认为正在编辑的字符相比偏移 2 个位置的字符。
如果在步骤 4 中输入跨多行的命令(而不是按向上键),也会发生类似的情况。我可以退格到上一行,然后删除提示符中的两个字符。
基本上是这样的:
(Some output)
^Cuser@host:~/path/to/somewhere $ some long command
that wraps
^C
被出现在行开头的打破。
我尝试了一些其他命令(例如sleep 30
),并且^C
单独出现在一行上,并且提示符出现在下一行上。这似乎只发生在节点.js: node some_command_that_wraps.js
。
如果它很重要,我有一个颜色鲜艳的、git 集成的PROMPT_COMMAND
.您可以在以下位置找到它:github,以防万一我做了一些愚蠢的事情。
更新
我的 PS1(例如)设置为(我稍微包裹了一下):
\[\e]0;\u@\h:\w\a\]
\[\e[0;93m\]\u@\h\[\e[0;96m\]:\w
\[\e[0;97m\]{\[\e[0;94m\]master\[\e[0;92m\]\[\e[0;91m\] ~1\[\e[0;97m\]}
\[\e[0m\]\[\e[0;96m\]\$\[\e[0m\]
...显示(更多颜色):
roger@roger-p5q:~/Source/rlipscombe/bash_profile [master ~1] $
据我所知,转义字符是正确的不可数的(使用\[
.. \]
)。
我该如何:
- 让 bash 检测
^C
并移动到下一行?或者 - 不会搞乱命令编辑吗?
答案1
如果您只是想要一个解决方案以便继续工作;在这种情况下,我只需按一次或两次 Enter 键,就会得到一个干净的提示。
如果以前的一些输出导致了“奇怪”字符的混乱,我也可能会发出重置命令。
如果你真的很好奇并且需要找出根本原因,恐怕我从来没有弄清楚 readline 的这些特殊复杂性......