Linuxや他の多くのシステムでは、ターミナルをナビゲートするときにを押しTabて、ディレクトリまたはファイル名をオートコンプリートできます。
MySQLターミナルにそのようなものがあるのだろうかと思います。例えば、私はの説明を取得したい場合は、someTableWithRidiculousLongName
Iを入力することができdescribe someTableW
、その後Tab、それが残りの部分を自動的に完了します。
そのようなものはMySQLターミナルに存在しますか?
回答:
以下.my.cnf
を含む、ホームディレクトリで呼び出されるファイルを編集または作成します。
[mysql]
auto-rehash
--disable-auto-rehash
フラグを使用する場合はオプションです。しかし今、あなたはそれをデフォルトでオンにしました。
MySQLプロンプト内でオートコンプリートを有効にするには、次のように入力します。
mysql> \#
その後、次のように入力できます。
mysql> describe someTableW[TAB]
取得するため:
mysql> describe someTableWithRidiculousLongName
mysql> rehash
-「\#」の代わりに、次のように「rehash」mysqlコマンドを入力することもできます。「再ハッシュ」として共有することは、私のような一部の人にとっては覚えやすいかもしれません。 mysql> rehash
その後、オートコンプリートが機能し始めます。
追加オプション--auto-rehash
でMySQLコンソールを起動します。
mysql --auto-rehash -u root -p
これは古い質問ですが、高度なオートコンプリート機能を備えた非常に便利なMySql cliクライアント mycliを見つけました。組み込みの自動再ハッシュ機能よりもはるかにスマートです。
auto-rehash
私のものでは動作しません。mycliとboomに切り替えました....プロのように機能しました。
OS X 10.11.6では、上記のように--auto-rehashを設定しましたが、機能しませんでした。(これはOS Xであるため、mysqlはBSD libeditライブラリでコンパイルされます。)
次に、bind -vという1行を含む〜/ .editrcを作成して、mysqlクライアントのviキーバインディングを設定したことを思い出しました。これは、mysqlクライアントでviのようなナビゲーションを提供するのに最適ですが、列名の補完が壊れていました(.editrcを削除することでこれを確認できました)。
そこで少し調べてみたところ、〜/ .editrcには少なくとも次の行が必要であることがわかりました。
bind -v
bind \\t rl_complete
この追加行により、名前の補完はmysqlで正しく機能し、viのようなナビゲーションも機能します。(mysqlクライアントのナビゲーションを大幅に改善する他の.editrc設定がありますが、これはその議論のスレッドを開始する場所ではありません。)
自動再ハッシュに関する注意事項:
オートコンプリートを有効にすると、mysql構成ファイルが編集されます。
[mysql]
auto-rehash
すべてのユーザーに対して、または1人のユーザーに対してのみ実行できます。
/etc/my.cnf
: 全てのユーザー
~/.my.cnf
:実際のユーザー
オートコンプリートの追加を無効にすることもできます。
no-auto-rehash
抽出元:http://www.sysadmit.com/2016/08/linux-mysql-autocompletar.html
コマンド履歴に基づいてオートコンプリートすることもできます。入力を開始してからed-search-prev-history
、とにバインドされているキーを呼び出しますed-search-next-history
。これは、mysqlにlibeditサポートが付属している場合に適用されます。デフォルトのキーバインドはCtrl-PとCtrl-Nですが、これは.editrcでカスタマイズできます。Ctrl-upとCtrl-downの私の例:
# start typing, then press Ctrl-Up
bind "\e[1;5A" ed-search-prev-history
# start typing, then press Ctrl-Up, then Ctrl-Down
bind "\e[1;5B" ed-search-next-history
以前は、MySQLのはreadlineのに基づいて、その後、たhistory-search-backward
とhistory-search-forward
正しいコマンドです。その後、構成は.inputrcを使用して行われました。上記と同じ例:
# these are the key bindings for the readline library
# start typing, then press Ctrl-Up
"\e[1;5A": history-search-backward
# start typing, then press Ctrl-Up, then Ctrl-Down
"\e[1;5B": history-search-forward
つまり、入力を開始してsel
Ctrl-Upを呼び出すとselect * from some_long_table_name
、それが以前に使用したコマンドである場合に表示されます。