control-w (delete word) 在 MariaDB 客户端删除整行

dou*_*BTV 10 command-line bash terminal mariadb

我一直在使用原始的 MySQL 客户端“eons”,而且我相当习惯于在其中使用类似 bash 的快捷方式。我最常用的一个是用来control-w删除光标前的单词(就像你在 bash 中所做的那样)。

目前,使用我的 mariadb 客户端——如果我点击control-w它会删除光标前的整行。(至少在 bash 中通常是control-u

因此,例如,在标准的 bash 提示符中尝试它......或者甚至在经典的 MySQL 命令提示符中,如果我有这样的一行:

SELECT a,b,c FROM table WHERE column='value'
Run Code Online (Sandbox Code Playgroud)

我的光标在WHERE该行之前看起来像

WHERE column='value'
Run Code Online (Sandbox Code Playgroud)

当我真的期望它是:

SELECT a,b,c FROM WHERE column='value'
Run Code Online (Sandbox Code Playgroud)

我正在使用 Fedora,安装的 Maria 版本是:

[doug@talos werk]$ sudo rpm -qa | grep -i maria mariadb-10.0.21-1.fc21.x86_64 mariadb-config-10.0.21-1.fc21.x86_64 mariadb-common-10.0.21-1.fc21.x86_64

其他快捷的工作如预期,control-acontrol-e去分别开始和行结束,并control-[left arrow]向左移动一个字(或向右右箭头)

我正在运行客户端:

mysql -A --host=foo.local -u user -p'mypass'
Run Code Online (Sandbox Code Playgroud)

我找不到对 maria 客户端配置选项的引用,例如 a.mariarc或其他东西。我很乐意接受任何指点。

dou*_*BTV 16

我已经弄清楚需要做什么,我在 mysql 手册中的Mysql Tips 文章中找到了答案。

事实证明,行为取决于 MySQL 是针对哪个库编译的,readline或者libedit. 您可以使用.editrc文件自定义行为。

就我而言,要control+w按照我的预期工作,您将拥有一个如下所示的.editrc文件:

bind "^W" ed-delete-prev-word
Run Code Online (Sandbox Code Playgroud)

如果您想查看键绑定是什么,只需将单词bind放入.editrc(或在现有.editrc文件的末尾)