在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-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
是正确的命令。 然后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