このページは機械翻訳したものです。

5.3コード自動補完

MySQL Shellでは,“タブ”キーを押してカーソルの前のテキストの自動補完をサポートしています。セクション3.1 MySQL Shellのコマンドは,任意の言語モードで自動補完できます。たとえば,\反对と入力し,选项卡キーを押すと,\连接がオートコンプリートされます。自動補完は,現在のセクション5.1 "アクティブな言語"に応じて,SQL, JavaScriptおよびPython言語のキーワードに使用できます。

オートコンプリートでは,次のテキストオブジェクトがサポートされます:

  • SQLモード——自動補完では,現在アクティブなスキーマのスキーマ名,テーブル名,カラム名が認識されます。

  • JavaScriptおよびPythonモードでは,自動補完はオブジェクトメンバーを認識します。次に例を示します:

    • 会话dbdba壳牌mysqlmysqlxなどのグローバルオブジェクト名。

    • session.connect ()dba.configureLocalInstance ()などのグローバルオブジェクトのメンバー。

    • グローバルユーザー定義変数

    • shell.options.verboseなどの連鎖オブジェクトプロパティ参照。

    • .fetchOne col.find()其中(). execute () ()などの連鎖したX DevAPIメソッドコール。

デフォルトでは,自動補完は有効になっています。この動作を変更するには,オートコンプリートの構成を参照してください。

オートコンプリートをアクティブにすると,カーソルの前のテキストが1つの一致する可能性がある場合,そのテキストは自動的に入力されます。オートコンプリートで複数の一致が見つかると,端末がビープ音を鳴らすか点滅します。选项卡キーを再度押すと,使用可能な完了のリストが表示されます。一致するものが見つからない場合,自動補完は行われません。

自動補完SQL

MySQL壳がSQLモードの場合,オートコンプリートは,一致する可能性のあるすべての完了を含む単語を完了しようとします。SQLモードでは,次を自動完了できます:

  • SQLキーワード-既知のSQLキーワードのリスト。照合では大文字と小文字は区別されません。

  • SQLスニペット-显示创建表ALTER TABLE创建表など,特定の共通スニペット。

  • テーブル名——アクティブなスキーマがあり,データベース名キャッシュが無効になっていない場合,アクティブなスキーマのすべてのテーブルが可能な補完として使用されます。

特別な例外として,バックティックが見つかった場合は,テーブル名のみが完了とみなされます。SQLモードでは,自動補完はコンテキストに対応していません。つまり,sql文法に基づく補完のフィルタリングはありません。つまり,オートコンプリート选取选择を返しますが,自拍というテーブルを含めることもできます。

JavaScriptおよびPythonの自動補完

JavaScriptモードとPythonモードの両方で,完了する文字列は,“タブ”が押されたときに現在のカーソル位置から右から左に決定されます。メソッドコール内のコンテンツは無視されますが,構文的に正しい必要があります。つまり,文字列,コメントおよびネストされたメソッドコールはすべて適切にクローズされ,バランスがとれている必要があります。これにより,連鎖メソッドを適切に処理できます。たとえば,次のように発行するとします:

print (db.user.select()。Where("用户在('foo', 'bar')").e

“タブ”キーを押すと,自動補完でテキスト其中()即db.user.select ()の完了が試行されますが,この無効なコードでは未定義の動作が発生します。で区切られたトークン間の空白(改行を含む)は無視されます。

オートコンプリートの構成

デフォルトでは,自動完了エンジンは有効になっています。このセクションでは,オートコンプリートを無効にする方法および\重复MySQL Shellコマンドの使用方法について説明します。オートコンプリートでは,MySQL壳が認識しているデータベース名オブジェクトのキャッシュが使用されます。オートコンプリートが有効な場合,この名前キャッシュは自動的に更新されます。たとえば,スキーマをロードするたびに,自動補完エンジンはスキーマ内のテキストオブジェクトに基づいて名前キャッシュを更新し,テーブル名などをオートコンプリートできるようにします。

この動作を無効にするには,次のようにします:

  • ——no-name-cacheコマンドオプションを使用してMySQL Shellを起動します。

  • MySQL Shellの実行中に自動補完が無効になるように,shell.optionsautocomplete.nameCacheおよびdevapi.dbObjectHandlesキーを変更します。

オートコンプリート名キャッシュが無効になっている場合は,\重复を発行して,テキストオブジェクトのオートコンプリートが認識するように手動で更新できます。これにより,現在アクティブなスキーマに基づいて名前キャッシュが強制的にリロードされます。

MySQL Shellの実行中にオートコンプリートを無効にするには,次のshell.optionsキーを使用します:

  • autocomplete.nameCache:布尔は,sqlで使用するオートコンプリート名キャッシュを切り替えます。

  • devapi.dbObjectHandles: booleanは,db.mytabledb.mycollectionなどのX DevAPIdbオブジェクトで使用するオートコンプリート名キャッシュを切り替えます。

両方のキーがデフォルトで真正的に設定され,——no-name-cacheコマンドオプションが使用されている場合はに設定されます。MySQL壳の実行中にSQLのオートコンプリート名キャッシュを変更するには,次のコマンドを発行します:

shell.options [' autocomplete.nameCache '] = true

\重复コマンドを使用して,名前キャッシュを手動で更新します。

MySQL壳の実行中にJavaScriptおよびPythonのオートコンプリート名キャッシュを変更するには,次のコマンドを発行します:

shell.options [' devapi.dbObjectHandles '] = true

再度、\重复コマンドを使用して,名前キャッシュを手動で更新できます。