我通常有很长的终端命令,每当我尝试使用命令历史记录时(通过按向上箭头),文本格式变为乱码并且光标出现在错误的位置。此时编辑命令变得不可能,并且光标的实际位置未在屏幕上正确显示。
如果我调整终端窗口的大小以允许整个命令适合一行,则格式化得到纠正但有时我没有足够的屏幕空间来完成此操作。有任何想法吗?
我通常有很长的终端命令,每当我尝试使用命令历史记录时(通过按向上箭头),文本格式变为乱码并且光标出现在错误的位置。此时编辑命令变得不可能,并且光标的实际位置未在屏幕上正确显示。
如果我调整终端窗口的大小以允许整个命令适合一行,则格式化得到纠正但有时我没有足够的屏幕空间来完成此操作。有任何想法吗?
Answers:
您是否自定义了shell提示符(例如着色或类似的东西)?发生这种情况的常见原因是您的提示中有非打印字符(例如颜色更改序列),并且它们会使shell混淆提示的宽度,以及如何包装命令行。
假设您使用bash作为shell,正确的解决方案是将非打印序列包装起来\[...\]让shell知道它们是非打印的。例如,如果您希望提示为蓝色(\e[0;34m将其变为蓝色,\e[m恢复正常),您可以使用:
PS1='\[\e[0;34m\]your prompt text here\[\e[m\]'
这是发生在你的本地机器上 - 这个,我的意思是你没有SSH到另一台电脑?如果这是本地的,请尝试退出Terminal.app,删除.plist文件,然后重新打开Terminal.app。
.plist文件将删除应用程序的所有首选项,这可能是也可能不是OP想要的。最好只是移动它或暂时重命名它。