在MySQL命令行客户端自动完成

在Linux和许多其他系统中,当浏览terminal时,您可以按Tab键自动完成目录或文件名。

我想知道在MySQLterminal中是否有类似的东西。 例如,如果我想得到someTableWithRidiculousLongName的描述,我可以键入describe someTableW然后Tab ,它会自动完成其余的。

在MySQLterminal中是否存在类似的东西?

在主目录中编辑或创build名为.my.cnf的文件,其中包含:

 [mysql] auto-rehash 

要在MySQL提示符下启用自动完成function,请键入:

 mysql> \# 

之后,你可以input:

 mysql> describe someTableW[TAB] 

要得到:

 mysql> describe someTableWithRidiculousLongName 

使用附加选项--auto-rehash启动MySQL控制台,即

 mysql --auto-rehash -u root -p 

我知道这是一个古老的问题,但我发现非常有用的MySql cli客户端与高级自动完成: mycli 。 它比内置的自动重新刷新function更聪明。

在OS X 10.11.6上,我如上所述设置了–auto-rehash,但没有奏效。 (这是OS X,所以mysql是用BSD libedit库编译的。)

然后我记得我已经为mysql客户端设置了vi绑定了,通过创build〜/ .editrc,包含一行: bind -v 。 这对于在mysql客户端中给我vi类导航很好,但是它破坏了列名完成(我可以通过删除.editrc来validation这一点 )。

所以我研究了一下,发现〜/ .editrc应该至less有以下几行:

 bind -v bind \\t rl_complete 

有了这个额外的行,名称完成在mysql和vi-like导航工程中也能正常工作。 (还有其他的.editrc设置可以极大的改善mysql的客户端导航,但是这不是开始讨论这个话题的地方。)

您也可以根据命令历史logging自动完成。 开始input,然后调用绑定到ed-search-prev-historyed-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-backwardhistory-search-forward是正确的命令。 然后configuration是通过.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 

所以,如果你开始inputsel并调用Ctrl-Up, select * from some_long_table_name如果这是我之前使用过的命令,就会出现。

有关自动重新sorting的一些注意事项:

当你启用自动完成编辑mysqlconfiguration文件

 [mysql] auto-rehash 

您可以为所有用户或只为一个用户:

/etc/my.cnf :所有用户

~/.my.cnf :实际用户

您还可以禁用自动完成添加:

 no-auto-rehash 

摘自: http : //www.sysadmit.com/2016/08/linux-mysql-autocompletar.html