当我运行程序时,我习惯使用 ctrl-c 终止它,然后按向上箭头以恢复上一个命令行,然后编辑文本并再次运行。在 Ubuntu 14.04 中,当我使用退格键并输入新字母时,我在终端中看到的内容和实际运行的内容并不相同。在运行新的错误命令行后按 ctrl-c 和向上箭头会显示实际执行的乱码文本 - 看起来我认为光标所在的位置和终端实际光标所在的位置不一致。
如果我在应用程序退出后再次按 ctrl-c,我将返回到干净的命令行,并且可以按向上键并正常编辑。我相信这不是必需的,是否有一个我可以更改的设置也能产生良好的命令行?
GNOME 终端 3.6.2
$ stty -a
speed 38400 baud; rows 48; columns 100; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?; swtch = M-^?;
start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc ixany imaxbel
iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
答案1
发生的情况是中断正在新行上输出字符,因此提示不是从该行的开头开始。结果是,shell 编辑功能认为您所在的行上的位置实际上并不是您真正所在的位置。
Ctrl CEnter简单的解决方案是在点击向上箭头重新输入最近的命令行之前执行类似的操作。或者继续使用您的Ctrl CCtrl C方法,该方法具有相同的最终结果,但输入速度可能更快。