我正在使用 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
出于软件许可原因而构建的。
editline
Ctrl+的默认绑定W通常是删除直到光标位置的整行。更改该绑定以仅删除前面的单词的方法是.editrc
在您的主目录中创建一个名为的文件,其中包含以下内容:
bind "^W" ed-delete-prev-word
下次您启动时,客户mysql
将会注意到这一点。
(来源)