MySQL命令行客户端中的自动完成

时间:2011-11-30 20:13:17

标签: mysql autocomplete console

在Linux和许多其他系统中,在导航终端时,您可以按 Tab 自动完成目录或文件名。

我想知道MySQL终端中是否有类似内容。例如,如果我想获得someTableWithRidiculousLongName的描述,我可以输入describe someTableW然后 Tab ,它会自动完成剩下的工作。

MySQL终端中是否存在类似的内容?

7 个答案:

答案 0 :(得分:120)

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

[mysql]
auto-rehash

答案 1 :(得分:75)

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

mysql> \#

之后你可以输入:

mysql> describe someTableW[TAB]

获得:

mysql> describe someTableWithRidiculousLongName

答案 2 :(得分:58)

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

mysql --auto-rehash -u root -p

答案 3 :(得分:12)

我知道这是一个老问题,但我发现非常有用的MySql cli客户端具有高级自动完成功能: mycli。它比内置的自动重新特征功能更加智能。

答案 4 :(得分:2)

关于自动重播的一些注意事项:

启用自动完成时编辑mysql配置文件..

[mysql]
auto-rehash

您可以为所有用户或仅为一位用户执行此操作:

/etc/my.cnf:所有用户

~/.my.cnf:实际用户

您还可以停用自动填充功能:

no-auto-rehash

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

答案 5 :(得分:2)

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

然后我记得我通过创建〜/ .editrc为mysql客户端设置了vi密钥绑定,其中包含一行: bind -v 。这非常适合在mysql客户端中为我提供类似vi的导航,但它打破了列名完成(我能够通过删除 .editrc 来验证这一点。)

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

bind -v
bind \\t rl_complete

使用这个附加行,名称完成在mysql和vi类导航工作中也能正常工作。 (还有其他.editrc设置可以大大改善mysql客户端导航,但这并不是开始讨论的主题。)

答案 6 :(得分:1)

您还可以根据命令历史记录自动完成。开始输入,然后调用绑定到ed-search-next-history# 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附带libedit支持,这适用。默认的键绑定是Ctrl-P和Ctrl-N,但这可以在.editrc中自定义。我的示例为Ctrl-up和Ctrl-down:

history-search-backward

以前,mysql基于readline,然后history-search-forward# 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 是正确的命令。然后配置是通过.inputrc。与上面相同的例子:

sel

所以,假设您开始输入select * from some_long_table_name并调用Ctrl-Up,如果这是我之前使用过的命令,则会出现import numpy as np def roundGrade(grade): validGrades = np.array([-3,0,2,4,7,10,12]) return validGrades[np.argmin((grade-validGrades)**2)]