在Linux和许多其他系统中,在导航终端时,您可以按 Tab 自动完成目录或文件名。
我想知道MySQL终端中是否有类似内容。例如,如果我想获得someTableWithRidiculousLongName
的描述,我可以输入describe someTableW
然后 Tab ,它会自动完成剩下的工作。
MySQL终端中是否存在类似的内容?
答案 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)]
。