Linux系统中SQLPlus不能使用Backspace的解决办法
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/pengjiwei_0914/article/details/52848014
远程Linux/Unix系统进入sqlplus下输入sql语句后,按backspace键退格的时候会出现乱码^H,对于该问题可以通过其他方式来实现退格功能,也可以设置或者修改相应的参数来解决该问题,具体的方法如下:
方法一:
直接使用delete键来代替退格键;
方法二:
使用ctrl+backspace键来代替退格键;
方法三:
在运行sqlplus之前运行stty erase ^h
[[email protected] bin]$ stty erase ^h
若要恢复Ctrl+Backspace组合键删除功能,可执行以下命令:
[[email protected] bin]$ stty erase ^?
同时可通过stty -a查看所有的终端设置:
[[email protected] bin]$ stty -a
speed 38400 baud; rows 57; columns 197; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; 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 -cdtrdsr
-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
方法四:
在进入到sqlplus后,可以通过vi编辑器对相应的Sql语句进行修改,相应的命令为ed或者edit;
SQL> select user from dual;
USER
------------------------------
SCOTT
SQL> ed;
SQL> edit;
如果没有出现vi界面,只是出现类似于“Wrote file afiedt.buf 24”的内容,则需要输入q,然后按回车退到SQL>界面,然后执行define _editor=vi命令修改编辑器为VI编辑器;
SQL> ed
Wrote file afiedt.buf
24
SQL> define _editor=vi
SQL> ed
方法五:
直接将配置写到配置文件profile中,具体的内容为:
stty erase ^h
PS1="\[email protected]\h $ "
export EDITOR=vi
方法六:
如果使用CRT工具远程Linux系统时,可以通过修改配置来解决Backspace键不能正常退格的问题,在选项->会话选项->终端->映射键->其他键的对话框中勾选“Backspace发送delete”前的单选框,然后点击“确定”按钮保存即可。