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

解決策として、mariadbmysqlのコミュニティベースのフォークをインストールし、そのクライアントにreadlineを提供するので、mysqlクライアントを使用しました。

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管理者はeditlineを好み、readlineを放棄したようです。 (EditlineはBSDのようで、readlineはGNUであり、後者は商用版を提供したいという欲求と衝突するようです。)

この点で私が見つけた関連のバグレポートは次のとおりです。

答え2

mysql一部のプラットフォーム/ディストリビューションでは、一部のバージョンのクライアントはソフトウェアライセンスの理由ではeditlineなくソフトウェアライセンスの理由でreadline構築されています。

editlineCtrl+のデフォルトのバインディングは、通常、カーソルW位置まで行全体を削除することです。前の単語のみを削除するようにこのバインディングを変更する方法は、.editrcホームディレクトリに次のコンテンツで呼び出されるファイルを作成することです。

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

お客様は、次回のリリース時にmysqlこの事実に気付くでしょう。

源泉)

関連情報