MySQL Shell支持按光标前面的文本自动补全选项卡关键。的第3.1节“MySQL Shell命令”可以在任何语言模式下自动完成。例如,键入\反对
然后按下选项卡
键自动完成到\连接
。自动补全可用于SQL, JavaScript和Python语言关键字,取决于当前第5.1节“主动语言”。
自动补全支持以下文本对象:
在SQL模式中,自动完成能够识别当前活动模式的模式名、表名和列名。
在JavaScript和Python模式下,自动补全意识到对象成员,例如:
全局对象名称,例如
会话
,db
,dba
,壳牌
,mysql
,mysqlx
,等等。全局对象的成员,例如
session.connect ()
,dba.configureLocalInstance ()
,等等。全局用户定义变量
链式对象属性引用,例如
shell.options.verbose
。链接X DevAPI方法调用,例如
.fetchOne col.find()其中(). execute () ()
。
默认情况下,自动完成是启用的,要更改此行为请参见配置自动完成。
激活自动补全后,如果光标前面的文本刚好有一个可能的匹配,则文本将自动补全。如果自动补全发现多个可能的匹配,它会发出嘟嘟声或让终端闪烁。如果选项卡
再次按下键,显示可能完成的列表。如果没有找到匹配,则不会发生自动补全。
当MySQL Shell处于SQL模式时,自动补全尝试用所有可能匹配的补全完成任何单词。在SQL模式下,可以自动完成以下操作:
SQL关键字—已知SQL关键字的列表。匹配不区分大小写。
SQL代码段——某些公共代码段,例如
显示创建表
,ALTER TABLE
,创建表
,等等。表名——如果存在活动模式且数据库名称缓存未禁用,则使用活动模式的所有表作为可能的补全。
作为一个特殊的异常,如果发现反勾,则只考虑表名来完成。在SQL模式中,自动补全不感知上下文,这意味着不基于SQL语法对补全进行过滤。换句话说,自动补全选取
返回选择
但它也可能包括一张名为“自拍”的桌子。
在JavaScript和Python模式中,要完成的字符串从右到左确定,从当前光标位置开始选项卡被按下。方法调用中的内容将被忽略,但必须是语法正确的。这意味着字符串、注释和嵌套方法调用都必须适当地关闭和平衡。这允许正确地处理链式方法。例如,当您发出:
print (db.user.select()。Where ("user in ('foo', 'bar')").e
按下选项卡键将导致自动补全试图补全文本其中()即db.user.select ()
但是这个无效的代码会产生未定义的行为。符号之间的任何空白,包括换行符。
将被忽略。
默认情况下,自动完成引擎是启用的。本节解释如何禁用自动完成以及如何使用\重复
MySQL Shell命令。自动完成使用MySQL Shell感知的数据库名称对象缓存。当启用自动完成时,这个名称缓存将自动更新。例如,每当加载模式时,自动完成引擎会根据在模式中找到的文本对象更新名称缓存,以便您可以自动完成表名等。
要禁用此行为,您可以:
启动MySQL Shell
——no-name-cache
命令选项。修改
autocomplete.nameCache
而且devapi.dbObjectHandles
的钥匙shell.options
禁用MySQL Shell运行时的自动完成功能。
当自动补全名称缓存被禁用时,您可以通过发出来手动更新自动补全识别的文本对象\重复
。这将强制基于当前活动模式重新加载名称缓存。
要禁用MySQL Shell运行时的自动完成功能,请使用以下方法shell.options
密钥:
autocomplete.nameCache:布尔
切换SQL使用的自动完成名称缓存。devapi.dbObjectHandles: boolean
切换X DevAPI使用的自动补全名称缓存db
对象,例如db.mytable
,db.mycollection
。
两个键都设置为真正的
默认为,设置为假
如果——no-name-cache
命令选项。要在MySQL Shell运行时更改SQL的自动完成名称缓存,请执行以下命令:
shell.options [' autocomplete.nameCache '] = true
使用\重复
命令手动更新名称缓存。
要在MySQL Shell运行时更改JavaScript和Python的自动完成名称缓存,请执行以下命令:
shell.options [' devapi.dbObjectHandles '] = true
你也可以用\重复
命令手动更新名称缓存。