我经常在Ubuntu盒子上使用mysql命令行客户端。 它工作正常,除了键绑定是错误的。 具体来说,按“Home”,“End”或“Delete”使其输出一个〜(代字号)字符,并发出嘟嘟声。
我已经确定,Home / End可以通过分别按Control + A和Control + E来完成,就像在Macterminal上一样。 我在一个Windows机器上,使用PuTTY与Ubuntu交谈,但是在常规命令行中,home / end / delete键可以正常工作。 我很确定这是一个特定于mysql客户端的问题。
我检查了man文件,但没有发现任何有用的东西。 有没有办法将Home / End / Delete键绑定到他们的实际function? 也许在我的主目录中的configuration文件什么的?
每当我移回几个空格来编辑一个查询,然后按下delete,我只需要再次前进,所以我可以使用Backspace键来删除不正确的查询,而且还删除删除键放入的〜
这让我慢慢地,但肯定地疯狂。 疯了,我告诉你,疯了!
好吧,我注意到我的家庭服务器没有问题,比较工作和家庭服务器让我终于明白了。
这是Ubuntu 9.10版本中引入的一个bug,这是我的工作服务器运行的。 具体来说,Ubuntu 9.10中的/ usr / bin / mysql版本使用了EditLine包装器,而不是readline包装器:
wmartin@work:~$ mysql --version && md5sum /usr/bin/mysql && lsb_release -a mysql Ver 14.14 Distrib 5.1.37, for debian-linux-gnu (i486) using EditLine wrapper e23604381e64ac805fdbb8b334ce4d17 /usr/bin/mysql No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 9.10 Release: 9.10 Codename: karmic
比较我的家庭服务器上最近的版本:
wmartin@home:~$ mysql --version && md5sum /usr/bin/mysql && lsb_release -a mysql Ver 14.14 Distrib 5.1.41, for debian-linux-gnu (i486) using readline 6.1 4274c43798239142576e77c022d35bd1 /usr/bin/mysql No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 10.04.2 LTS Release: 10.04 Codename: lucid
10.04版本(大概是后来的版本)工作得很好 – mysql使用Putty的默认设置来尊重home / end / delete键。
因此,解决scheme是将服务器升级到10.04或更高版本,或者使用命令行实用程序rlwrap在readline环境中包装mysql客户端,如恢复Ubuntu 9.10(Karmic Koala)的读取function所述。 。
不幸的是, rlwrap方法有一个令人讨厌的副作用,就是在input密码时可以看到密码,而不是压缩输出。 所以我想我会采取升级路线。
我会说这个问题是你的PuTTY设置 – 在连接窗口的“Terminal”,“Keyboard”下 – 将“Home and End keys”的选项更改为rxvt 。 不完美(结束将不会工作),但你会得到家庭和删除。
IMO真正的解决scheme是使用适当的terminal和正确的SSH; Console2对于terminal是相当不错的,MSYS或Cygwin可以给你SSH(msysgit包括它)。
编辑 :
听起来你已经发现MySQL CLI中的错误。