如何重新绑定 mysql 客户端的快捷方式? -- 或者:如何将mysql客户端的editline替换为readline?

如何重新绑定 mysql 客户端的快捷方式? -- 或者:如何将mysql客户端的editline替换为readline?

我正在使用 msyql-client,并通过以下方式在终端上打开 mysql 提示符:

$ mysql -h localhost -uuser -ppassword
mysql> 

我使用的msql客户端版本:

Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using  EditLine wrapper

对于具有类似 emacs 绑定的终端,我有很强的肌肉记忆可以使用

Ctrl+W

删除最后一个单词。然而在 mysql 客户端内部,它会删除回行的开头,因此我很难编写或调整查询。

我可以重新绑定 mysql 客户端的键盘快捷键吗?如果可以,如何重新绑定?我知道我可以使用 Alt + Backspace 代替,但我想保持用法一致。

答案1

作为解决方法,我安装了mariadb社区驱动的 mysql 分支,并使用其 mysql 客户端,因为该客户端附带了 readline:

sudo apt install mariadb-client
mysql --version
mysql  Ver 15.1 Distrib 10.0.29-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

你可以像mysql客户端一样使用。


请记住,它会卸载 mysql,尽管我认为这是一个功能。

由于许可原因,mysql 的维护者似乎放弃了 readline,转而使用 editline。 (Editline 似乎是 BSD,readline 是 GNU,后者似乎与他们提供商业版本的愿望相冲突。)

这些是我在这方面发现的相关错误报告:

答案2

mysql在某些平台/发行版上,某些版本的客户端是针对软件许可原因editline而不是readline出于软件许可原因而构建的。

editlineCtrl+的默认绑定W通常是删除直到光标位置的整行。更改该绑定以仅删除前面的单词的方法是.editrc在您的主目录中创建一个名为的文件,其中包含以下内容:

bind "^W" ed-delete-prev-word

下次您启动时,客户mysql将会注意到这一点。

(来源

相关内容