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

Ala*_*Dee 74 mysql console autocomplete

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

我想知道MySQL终端中是否有类似的东西.例如,如果我想获得someTableWithRidiculousLongName我可以输入的描述,describe someTableW那么Tab它将自动完成其余的.

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

T Z*_*ink 123

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

[mysql]
auto-rehash
Run Code Online (Sandbox Code Playgroud)

  • 这是一个比被接受的答案更好的答案 (8认同)
  • 但是,当我以小写字母键入命令时,它不起作用。 (3认同)
  • @rkmax - 它仍然是`--disable-auto-rehash`标志的可选项.但是现在你默认打开了它. (2认同)

cat*_*ger 79

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

mysql> \#
Run Code Online (Sandbox Code Playgroud)

之后你可以输入:

mysql> describe someTableW[TAB]
Run Code Online (Sandbox Code Playgroud)

要得到:

mysql> describe someTableWithRidiculousLongName
Run Code Online (Sandbox Code Playgroud)

  • 为什么那不是默认的? (7认同)
  • @OussamaElgoumri 因为我们中的一些人喜欢将复杂的查询粘贴到命令行中,并且这些查询可能包含用于缩进的制表符。 (3认同)
  • `mysql> rehash` - 作为“\#”的替代方案,我们还可以键入“rehash”mysql 命令,如下所示。对于像我这样的人来说,将共享视为“rehash”可能更容易记住:`mysql> rehash` 之后,自动完成将开始工作! (2认同)

rab*_*dde 58

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

mysql --auto-rehash -u root -p
Run Code Online (Sandbox Code Playgroud)

  • 我知道为什么那对我不起作用!该选项卡仅被解释为选项卡,对自动完成没有任何作用. (7认同)
  • @pjp - 此功能[不适用于常规Windows版本](http://stackoverflow.com/questions/269653/autocomplete-in-mysql-under-windows) (7认同)
  • 注意,正如 Otheus 在 https://unix.stackexchange.com/questions/270309/tab-completion-does-not-work-in-mysql-command-line-client 中指出的那样,tabcomplete 仅在连接到数据库后才有效/270616#270616?newreg=334448009e904ef9addb6a9d140cb12e (2认同)

mat*_*wko 15

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

  • 很棒的选择! (4认同)
  • 哦,是的,一流的答案 (2认同)

pob*_*pob 7

在 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
Run Code Online (Sandbox Code Playgroud)

有了这个额外的行,名称完成可以在 mysql 中正常工作,并且类似 vi 的导航也可以工作。(还有其他 .editrc 设置可以极大地改进 mysql 客户端导航,但这不是开始讨论的地方。)