在Linux和许多其他系统中,在浏览终端时,可以按Tab以自动完成目录或文件名。
我想知道MySQL终端中是否有类似的东西。例如,如果我想获得对someTableWithRidiculousLongName
我的描述,则可以输入describe someTableW
then Tab,它将自动完成其余的内容。
MySQL终端中是否存在类似的东西?
Answers:
编辑或创建一个.my.cnf
位于您的主目录中的文件,其中包含:
[mysql]
auto-rehash
--disable-auto-rehash
标志仍然是可选的。但是现在您已默认打开它。
要在MySQL提示中启用自动完成功能:
mysql> \#
之后,您可以输入:
mysql> describe someTableW[TAB]
要得到:
mysql> describe someTableWithRidiculousLongName
mysql> rehash
-作为“ \#”的替代,我们还可以按如下方式键入“ rehash” mysql命令。对于像我这样的某些人来说mysql> rehash
,将共享称为“重新哈希”可能更容易记住: 自动填充功能将开始起作用!
使用其他选项启动MySQL控制台--auto-rehash
,即
mysql --auto-rehash -u root -p
在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客户端导航,但这不是开始讨论该话题的地方。)
有关自动重新调制的一些注意事项:
启用自动完成功能后,请编辑mysql配置文件。
[mysql]
auto-rehash
您可以为所有用户或仅为一个用户执行此操作:
/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
andhistory-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
如果这是我之前使用的命令,则会出现。