在使用 bash 时,我经常使用 ^A 和 ^E 键来转到行首和行末,使用箭头键来在不删除字符的情况下从一个字符移动到另一个字符。时不时地,当我输入某些工具时,我的热键就会完全失效,无法正常工作。我的键盘被重新映射,删除键变成了退格键,^W 现在会删除单词,我无法在命令行中更正任何内容,因为几乎每个用于编辑输入命令的键都会将垃圾字符放到终端上。在 UNIX 终端中输入密码或 SQLPlus 时,我经常会发生这种情况。
我甚至不知道这是 bash 还是别的什么,但有人告诉我看一下这个命令:
$ stty -a
speed 38400 baud; rows 37; columns 100; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = ^Z;
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
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo -echoe -echok -echonl -noflsh -tostop -echoctl -echoke
无论如何,我不知道我在这里看到的是什么,但我确实认出了某些快捷键 ^W 和 ^U。我该如何重新定义事物,让这个奇怪的终端设置像常规 bash 一样运行
答案1
您所描述的大部分内容都是由 readline 提供的,因此如果您使用的实用程序不支持 readline 或类似程序,那么您就没那么幸运了。终端仅解释一组非常有限的转义码,主要是用于删除前一个单词 (^W) 和删除整行 (^U) 的转义码,其余的 (^A、^E、...) 则由应用程序来完成。
答案2
我认为您想要包reset
中的命令ncurses
。
如果您指的是在 内部sqlplus
,那么另一个答案是正确的:您无能为力,因为sqlplus
是一个古老的 并且不支持readline
。