Ft_sql

Nvim の:help ページ。 生成元は ソース で、tree-sitter-vimdoc パーサーを使用しています。


David Fishburn 著
これは、SQLファイルで動作するファイルタイププラグインです。
構造化照会言語 (SQL) は、ユーザーがリレーショナルデータベースと対話できるようにするステートメントを指定する標準です。Vimには、ナビゲーション、インデント、構文強調表示の機能が含まれています。
1. ナビゲーション sql-navigation 1.1 Matchit sql-matchit 1.2 テキストオブジェクト移動 sql-object-motions 1.3 プリ定義オブジェクト移動 sql-predefined-objects 1.4 マクロ sql-macros 2. SQL 方言 sql-dialects 2.1 SQLSetType SQLSetType 2.2 SQLGetType SQLGetType 2.3 SQL 方言のデフォルト sql-type-default 3. 新しいSQL方言の追加 sql-adding-dialects 4. OMNI SQL 補完 sql-completion 4.1 静的モード sql-completion-static 4.2 動的モード sql-completion-dynamic 4.3 チュートリアル sql-completion-tutorial 4.3.1 テーブルの補完 sql-completion-tables 4.3.2 列の補完 sql-completion-columns 4.3.3 プロシージャの補完 sql-completion-procedures 4.3.4 ビューの補完 sql-completion-views 4.4 補完のカスタマイズ sql-completion-customization 4.5 SQLマップ sql-completion-maps 4.6 他のファイルタイプとの使用 sql-completion-filetypes

1. ナビゲーション

SQL ftplugin は、ファイルのナビゲーションを支援するための多くのオプションを提供します。

1.1 Matchit sql-matchit

matchit プラグイン (https://www.vim.org/scripts/script.php?script_id=39) は、多くの追加機能を提供し、さまざまな言語に合わせてカスタマイズできます。matchit プラグインは、ローカルバッファ変数 `b:match_words` を定義することで設定されます。さまざまなキーワード上で % キーを押すと、カーソルが対応する位置に移動します。たとえば、カーソルが "if" の上にある場合、% を押すと "else"、"elseif"、"end if" キーワード間を循環します。
次のキーワードがサポートされています。
if
elseif | elsif
else [if]
end if
[while condition] loop
    leave
    break
    continue
    exit
end loop
for
    leave
    break
    continue
    exit
end loop
do
    statements
doend
case
when
when
default
end case
merge
when not matched
when matched
create[ or replace] procedure|function|event
returns

1.2 テキストオブジェクト移動 sql-object-motions

Vim には、テキストを操作するための多数のプリ定義キーがあります object-motions。このファイルタイププラグインは、これらのキーをSQL言語にとって意味のあるマップに変換しようとします。
(SQLファイルの編集時) 次のノーマルモードとビジュアルモードマップが存在します。
]]                    move forward to the next 'begin'
[[                    move backwards to the previous 'begin'
][                    move forward to the next 'end'
[]                    move backwards to the previous 'end'

1.3 プリ定義オブジェクト移動 sql-predefined-objects

ほとんどのリレーショナルデータベースは、さまざまな標準機能、テーブル、インデックス、トリガー、ストアドプロシージャをサポートしています。各ベンダーには、さまざまな独自のオブジェクトもあります。次のマップセットは、これらのオブジェクト間を移動するのに役立つように作成されています。使用しているデータベースベンダーによっては、オブジェクトのリストを設定可能にする必要があります。このファイルタイププラグインは、多くの標準オブジェクトと、さらに多くの追加オブジェクトを定義しようとします。これをできるだけ柔軟にするために、vimrc 内で次のリストを上書きできます。
let g:ftplugin_sql_objects = 'function,procedure,event,table,trigger' ..
            \ ',schema,service,publication,database,datatype,domain' ..
            \ ',index,subscription,synchronization,view,variable'
上記のリストを使用する、次のノーマルモードとビジュアルモードマップが作成されました。
]}                    move forward to the next 'create <object name>'
[{                    move backward to the previous 'create <object name>'
]} を繰り返し押すと、これらの作成ステートメントを順番に巡回します。
create table t1 (
    ...
);
create procedure p1
begin
    ...
end;
create index i1 on t1 (c1);
g:ftplugin_sql_objects のデフォルト設定は次のとおりです。
let g:ftplugin_sql_objects = 'function,procedure,event,' ..
            \ '\\(existing\\\\|global\\s\\+temporary\\s\\+\\)\\\{,1}' ..
            \ 'table,trigger' ..
            \ ',schema,service,publication,database,datatype,domain' ..
            \ ',index,subscription,synchronization,view,variable'
上記は、これらのケースも処理します。
create table t1 (
    ...
);
create existing table t2 (
    ...
);
create global temporary table t3 (
    ...
);
デフォルトでは、ftplugin は CREATE ステートメントのみを検索します。init.vim で次のように上書きすることもできます。
let g:ftplugin_sql_statements = 'create,alter'
このファイルタイププラグインは、3種類のコメントを定義します。
1.  --
2.  //
3.  /*
     *
     */
コメントで動作するために、次のノーマルモードとビジュアルモードマップが作成されました。
]"                    move forward to the beginning of a comment
["                    move forward to the end of a comment

1.4 マクロ sql-macros

マクロ定義を検索するVimの機能、'define' は、この正規表現を使用してサポートされています。
\c\<\(VARIABLE\|DECLARE\|IN\|OUT\|INOUT\)\>
これは次のコードに対処します。
CREATE VARIABLE myVar1 INTEGER;
CREATE PROCEDURE sp_test(
    IN myVar2 INTEGER,
    OUT myVar3 CHAR(30),
    INOUT myVar4 NUMERIC(20,0)
)
BEGIN
    DECLARE myVar5 INTEGER;
    SELECT c1, c2, c3
      INTO myVar2, myVar3, myVar4
      FROM T1
     WHERE c4 = myVar1;
END;
この行で「myVar1」にカーソルを置きます。
WHERE c4 = myVar1;
            ^
次のいずれかのキーを押します。
[d
[D
[CTRL-D

2. SQL 方言 sql-dialects sql-types

sybase TSQL Transact-SQL sqlanywhere
oracle plsql sqlj sqlserver
mysql postgresql psql informix
すべてのリレーショナルデータベースはSQLをサポートしています。ベンダー間で移植可能なSQLの一部(例:CREATE TABLE、CREATE INDEX)がありますが、SQLには非常に多くのベンダー固有の拡張機能があります。Oracleは、「CREATE OR REPLACE」構文、CREATE TABLEステートメントで指定された列のデフォルト、およびプロシージャ言語(ストアドプロシージャおよびトリガー用)をサポートしています。
デフォルトのVimディストリビューションには、OracleのPL/SQLに基づいた構文強調表示が付属しています。デフォルトのSQLインデントスクリプトは、OracleとSQL Anywhereで機能します。デフォルトのファイルタイププラグインはすべてのベンダーで機能し、ベンダーに依存しないまま拡張可能である必要があります。
Vimは現在、さまざまなベンダーをサポートしていますが、現在は構文スクリプトを介して行われています。残念ながら、異なる構文規則を切り替えるには、次のいずれかを作成する必要があります。1. 新しいファイルタイプ 2. カスタムautocmd 3. 手動の手順/コマンド
ほとんどの人は1つのベンダーのデータベース製品のみを使用しているため、init.vim でデフォルトを指定できると便利です。

2.1 SQLSetType sqlsettype SQLSetType

多くの異なるデータベースで作業するユーザーにとっては、バッファごとに、いつでもさまざまなベンダーの規則(インデント、構文)を切り替えることができるのは便利です。ftplugin/sql.vimファイルはこの関数を定義しています。
SQLSetType
パラメーターなしでこの関数を実行すると、インデントと構文スクリプトがデフォルトに戻されます。sql-type-defaultを参照してください。オプションのパラメーターを補完するには、<Tab>キーを使用できます。
関数名とスペースを入力した後、補完を使用してパラメーターを指定できます。この関数は、ソースするVimスクリプトの名前を取ります。cmdline-completion機能を使用すると、SQLSetType関数は'runtimepath'で「sql」を含む名前のすべてのVimスクリプトを検索します。これにより、名前のスペルを推測する必要がなくなります。次に例を示します。
:SQLSetType
:SQLSetType sqloracle
:SQLSetType sqlanywhere
:SQLSetType sqlinformix
:SQLSetType mysql
最も簡単な方法は、<Tab>文字を使用することです。これにより、最初にコマンド名(SQLSetType)が補完され、スペースと別の<Tab>の後で、使用可能なVimスクリプト名のリストが表示されます。
:SQL<Tab><space><Tab>

2.2 SQLGetType sqlgettype SQLGetType

いつでも、SQLGetTypeコマンドを呼び出すことによって、使用しているSQL方言を確認できます。ftplugin/sql.vimファイルはこの関数を定義しています。
SQLGetType
これは次のようにエコーします。
Current SQL dialect in use:sqlanywhere

2.3 SQL 方言のデフォルト sql-type-default

前述のように、Vimのデフォルトの構文規則はOracle(PL/SQL)に基づいています。 init.vim に次のいずれかを配置することで、このデフォルトを上書きできます。
let g:sql_type_default = 'sqlanywhere'
let g:sql_type_default = 'sqlinformix'
let g:sql_type_default = 'mysql'
init.vim に次を追加した場合
let g:sql_type_default = 'sqlinformix'
次にSQLファイルを編集すると、次のスクリプトがVimによって自動的にロードされます。
ftplugin/sql.vim
syntax/sqlinformix.vim
indent/sql.vim
indent/sqlinformix.sqlはロードされませんでした。Informixのインデントファイルはないため、指定されたファイルが存在しない場合は、Vimはデフォルトのファイルをロードします。

3. 新しいSQL方言の追加 sql-adding-dialects

デフォルトのVimディストリビューションで使用可能なカスタマイズがないSQL方言で作業を開始する場合は、https://www.vim.orgで現在カスタマイズが存在するかどうかを確認できます。存在しない場合は、既存のスクリプトをクローンすることから始めることができます。詳細については、filetype-pluginsを参照してください。
これらのスクリプトを識別するために、「sql」プレフィックスを使用してファイルを作成してみてください。SQLiteデータベースのカスタマイズを作成することにした場合、次のいずれかを作成できます。
Unix
    ~/.config/nvim/syntax/sqlite.vim
    ~/.config/nvim/indent/sqlite.vim
SQLSetType関数に変更を加える必要はありません。新しいSQLファイルが自動的に検出され、SQLSetTypeコマンドを発行するとロードされます。
Vim 7には、コード補完インターフェースと関数があり、プラグイン開発者は任意の言語のコード補完を組み込むことができます。Vim 7には、SQL言語のコード補完が含まれています。
SQL補完プラグインには、静的モードと動的モードの2つのモードがあります。静的モードは、現在の構文強調表示規則から生成されたデータでポップアップに入力します。動的モードは、データベースから直接取得したデータでポップアップに入力します。これには、テーブルリスト、コラムリスト、プロシージャ名などが含まれます。

4.1 静的モード sql-completion-static

作成された静的ポップアップには、ファイルタイプがSQLのファイルの編集中にアクティブな構文規則によって定義されたアイテムが含まれています。プラグインは(デフォルトで)ユーザーがアイテムのリストを絞り込むためのさまざまなマップを定義しています。デフォルトの静的マップは次のとおりです。
imap <buffer> <C-C>a <C-\><C-O>:call sqlcomplete#Map('syntax')<CR><C-X><C-O>
imap <buffer> <C-C>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword')<CR><C-X><C-O>
imap <buffer> <C-C>f <C-\><C-O>:call sqlcomplete#Map('sqlFunction')<CR><C-X><C-O>
imap <buffer> <C-C>o <C-\><C-O>:call sqlcomplete#Map('sqlOption')<CR><C-X><C-O>
imap <buffer> <C-C>T <C-\><C-O>:call sqlcomplete#Map('sqlType')<CR><C-X><C-O>
imap <buffer> <C-C>s <C-\><C-O>:call sqlcomplete#Map('sqlStatement')<CR><C-X><C-O>
すべてのプラットフォームで正常に動作しない可能性があるため、init.vimで次のように使用することで、"<C-C>"の使用をユーザーが選択できます。
let g:ftplugin_sql_omni_key = '<C-C>'
静的マップ(構文強調表示グループに基づく)は次の形式に従います。
imap <buffer> <C-C>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword')<CR><C-X><C-O>
imap <buffer> <C-C>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword\w*')<CR><C-X><C-O>
このコマンドは次のように分解されます。
imap                   - Create an insert map
<buffer>                   - Only for this buffer
<C-C>k                   - Your choice of key map
<C-\><C-O>                   - Execute one command, return to Insert mode
:call sqlcomplete#Map( - Allows the SQL completion plugin to perform some
                         housekeeping functions to allow it to be used in
                         conjunction with other completion plugins.
                         Indicate which item you want the SQL completion
                         plugin to complete.
                         In this case we are asking the plugin to display
                         items from the syntax highlight group
                         'sqlKeyword'.
                         You can view a list of highlight group names to
                         choose from by executing the
                             :syntax list
                         command while editing a SQL file.
'sqlKeyword'           - Display the items for the sqlKeyword highlight
                         group
'sqlKeyword\w*'           - A second option available with Vim 7.4 which
                         uses a regular expression to determine which
                         syntax groups to use
)<CR>                   - Execute the :let command
<C-X><C-O>                   - Trigger the standard omni completion key stroke.
                         Passing in 'sqlKeyword' instructs the SQL
                         completion plugin to populate the popup with
                         items from the sqlKeyword highlight group.  The
                         plugin will also cache this result until Vim is
                         restarted.  The syntax list is retrieved using
                         the syntaxcomplete plugin.
'syntax'キーワードを使用することは特別なケースです。これにより、syntaxcompleteプラグインはすべての構文アイテムを取得するように指示されます。そのため、これはVimのSQL構文ファイルのいずれかすべてで効果的に機能します。執筆時点では、さまざまなSQL方言の10個の異なる構文ファイルが含まれています(上記セクション3、sql-dialectsを参照)。
構文ファイルから取得されたエントリの例を次に示します。
All
    - Contains the contents of all syntax highlight groups
Statements
    - Select, Insert, Update, Delete, Create, Alter, ...
Functions
    - Min, Max, Trim, Round, Date, ...
Keywords
    - Index, Database, Having, Group, With
Options
    - Isolation_level, On_error, Qualify_owners, Fire_triggers, ...
Types
    - Integer, Char, Varchar, Date, DateTime, Timestamp, ...

4.2 動的モード sql-completion-dynamic

動的モードは、データベースから直接データを取得してポップアップに入力します。動的機能を有効にするには、dbext.vimプラグインをインストールする必要があります。(https://vim.sourceforge.net/script.php?script_id=356)。
動的モードは、SQL補完プラグインのいくつかの機能で使用されます。dbextプラグインをインストールしたら、dbextチュートリアルを参照して、追加の設定と使用方法を確認してください。dbextプラグインを使用すると、SQL補完プラグインは、テーブル、プロシージャ、ビュー、列のリストを表示できます。
Table List
    - All tables for all schema owners
Procedure List
    - All stored procedures for all schema owners
View List
    - All stored procedures for all schema owners
Column List
    - For the selected table, the columns that are part of the table
挿入モードでポップアップを有効にするには、各グループに対して次のキーの組み合わせを使用します(<C-C>は、CTRLキーを押しながらスペースバーを押すことを意味します)。テーブルリスト - <C-C>t
<C-X><C-O>(デフォルトのマップではテーブルを想定) ストアドプロシージャ一覧 - <C-C>p ビュー一覧 - <C-C>v カラム一覧 - <C-C>c
ドリルイン/アウト - テーブル一覧を表示するポップアップウィンドウを表示している場合、<Right>キーを押すと、現在ハイライトされているテーブルがそのテーブルのカラム一覧に置き換わります。
カラム一覧を表示するポップアップウィンドウを表示している場合、<Left>キーを押すと、カラム一覧がテーブル一覧に置き換わります。
これにより、テーブルにドリルダウンしてカラムを表示し、再び戻ることができます。
<Right>および<Left>は、init.vimからも選択できます。
let g:ftplugin_sql_omni_key_right = '<Right>'
let g:ftplugin_sql_omni_key_left  = '<Left>'
SQL補完プラグインは、ポップアップウィンドウに表示されるさまざまなリストをキャッシュします。これにより、これらのリストの再表示が非常に高速になります。データベースに新しいテーブルまたはカラムが追加された場合、プラグインのキャッシュをクリアする必要がある場合があります。これに対するデフォルトのマップは次のとおりです。
imap <buffer> <C-C>R <C-\><C-O>:call sqlcomplete#Map('ResetCache')<CR><C-X><C-O>
------------------------------------------------------------------------------ 4.3 SQLチュートリアル sql-completion-tutorial
このチュートリアルは、SQL補完プラグインの一般的な機能を説明することを目的としています。
a) You gain familiarity with the plugin
b) You are introduced to some of the more common features
c) Show how to customize it to your preferences
d) Demonstrate "Best of Use" of the plugin (easiest way to configure).
まず、新しいバッファを作成します。
:e tutorial.sql
静的機能
さまざまなリストを操作するには、挿入モードに入り、<C-C>s(SQL文の表示)を押します。この時点で、リストをスクロールダウンして「select」を見つけます。探している項目を既に知っている場合(たとえば、文が「s」で始まることがわかっている場合)、引用符なしで「se」と入力してから<C-Space>tを押します。「select」がポップアップリストでハイライト表示されていると仮定して、<Enter>を押してエントリを選択します。次に、* fr<C-C>a(すべての構文項目の表示)と入力し、「from」をポップアップリストから選択します。
ストアドプロシージャを作成する際に、「type」リストが役立ちます。これには、データベースでサポートされているすべての型のリストが含まれています。これは、使用している構文ファイルによっては必ずしも当てはまらない場合があります。SQL Anywhere構文ファイル(sqlanywhere.vim)はこれをサポートしています。
BEGIN
   DECLARE customer_id <C-C>T <-- Choose a type from the list
動的機能
動的機能を利用するには、まずdbext.vimプラグイン(https://vim.sourceforge.net/script.php?script_id=356)をインストールする必要があります。チュートリアルも付属しています。SQL補完プラグインの観点から、dbextが提供する主な機能はデータベースへの接続です。dbext接続プロファイルは、接続情報を定義する最も効率的なメカニズムです。接続が設定されると、SQL補完プラグインはバックグラウンドでdbextの機能を使用してポップアップに入力します。
以下は、dbext.vimが正しく構成されていることを前提としています。簡単なテストとして、コマンド`:DBListTable`を実行します。テーブルのリストが表示された場合、dbext.vimが期待通りに動作していることがわかります。そうでない場合は、dbext.txtのドキュメントを参照してください。
dbextチュートリアルに従ったと仮定して、<C-C>tを押すと、テーブルのリストが表示されます。dbextがテーブルリストを作成している間に遅延があります。リストが表示された後、<C-W>を押します。これにより、ポップアップウィンドウと、リストがアクティブになったときに既に選択されているテーブル名が削除されます。
4.3.1 テーブル補完: sql-completion-tables
<C-C>tを押すと、dbextプラグインを介して接続したデータベース内のテーブルのリストが表示されます。注:すべてのSQL補完ポップアップは、キーマップを押す前にプレフィックスを入力することをサポートしています。これにより、ポップアップウィンドウの内容が、これらの文字で始まる項目のみに制限されます。
4.3.2 カラム補完: sql-completion-columns
SQL補完プラグインは、特定のテーブルのカラムのリストも表示できます。カラム補完は<C-C>cでトリガーされます。
注:次の例では、ポップアップウィンドウがアクティブな間に<Right>を使用してカラムリストをトリガーします。
カラム補完の使用例
<C-C>tをもう一度押して、テーブルのリストを表示します。
リストが補完ウィンドウに表示されたら、<Right>を押します。これにより、テーブルのリストが、ハイライト表示されているテーブルのカラムのリストに置き換えられます(同じ短い遅延の後)。
<Left>を押すと、カラムリストが再びテーブルのリストに置き換わります。これにより、テーブルとカラムリストを非常に迅速にドリルダウンできます。
同じテーブルがハイライト表示されている間に<Right>をもう一度押します。カラムリストがキャッシュされているため、遅延がないことに気付くでしょう。キャッシュされたテーブルのスキーマを変更した場合は、<C-C>Rを押してSQL補完キャッシュをクリアできます。
注:<Right><Left>は、補完ウィンドウがアクティブなときに動作するように設計されています。補完ポップアップウィンドウがアクティブでない場合、通常の<Right>または<Left>が実行されます。
SQL文を動的に構築する方法を見てみましょう。select文にはカラムのリストが必要です。SQL補完プラグインを使用してカラムリストを作成するには2つの方法があります。
One column at a time:
1. SELECTと入力した後、<C-C>tを押してテーブルのリストを表示します。2. リストからテーブルを選択します。3. <Right>を押してカラムのリストを表示します。4. リストからカラムを選択してEnterキーを押します。5. 「,」を入力して<C-C>cを押します。カラムリストを生成するには、一般的にカーソルをテーブル名の上に置く必要があります。プラグインはこの名前を使用して、カラムリストを取得するテーブルを決定します。この手順では、カーソルをテーブル名の上に置かずに<C-C>cを押すため、表示されるカラムリストは前のテーブルのものです。別のカラムを選択して続行します。6. 必要に応じて手順5を繰り返します。
All columns for a table:
1. SELECTと入力した後、<C-C>tを押してテーブルのリストを表示します。2. カラムリストが必要なテーブルをハイライト表示します。3. <Enter>を押してリストからテーブルを選択します。4. <C-C>lを押して、このテーブルのすべてのカラムのカンマ区切りリストを要求します。5. 手順3で選択したテーブル名に基づいて、プラグインは妥当なテーブルエイリアスを決定しようとします。その後、エイリアスを受け入れるか変更するかを促されます。OKを押します。6. テーブル名は、テーブルのカラムリストが、エイリアスが各カラムの先頭に付加されたカンマ区切りリストに置き換えられます。7. 手順3と4は、<C-C>Lを押すことで置き換えることができます。これには、リストで現在ハイライトされているテーブルを選択するための<C-Y>がマップに埋め込まれています。
select文を作成する際には、特別な規定があります。次の文を考えてみましょう。
select *
  from customer c,
       contact cn,
       department as dp,
       employee e,
       site_options so
 where c.
挿入モードで、最後の「c.」を入力した後(これは「customer」テーブルのエイリアスです)、<C-C>cまたは<C-X><C-O>を押すことができます。これにより、customerテーブルのカラムのリストが表示されます。これは、select文の先頭に戻って、FROM句で指定されたテーブルのリストを見つけることによって行われます。この場合、「customer c」という文字列で、「c」はcustomerテーブルのエイリアスであることに注意します。「AS」キーワードもオプションでサポートされています(「customer AS c」)。
4.3.3 プロシージャ補完: sql-completion-procedures
テーブルリストと同様に、<C-C>pは、データベースに格納されているストアドプロシージャのリストを表示します。
4.3.4 ビュー補完: sql-completion-views
テーブルリストと同様に、<C-C>vは、データベース内のビューのリストを表示します。

4.4 補完のカスタマイズ sql-completion-customization

SQL補完プラグインは、init.vimで設定されたさまざまなオプションを介してカスタマイズできます。
omni_sql_no_default_maps
デフォルト: この変数は定義されていません。
この変数が定義されている場合、OMNI補完のマップは作成されません。sql-completion-mapsでさらに詳しく説明されています。 > omni_sql_use_tbl_alias
デフォルト: a
この設定は、カンマ区切りのカラムリストを生成する場合にのみ使用されます。デフォルトでは、マップは<C-C>lです。カラムリストを生成する際に、エイリアスを各カラムの先頭に付けることができます(例: e.emp_id、e.emp_name)。このオプションには3つの設定があります。
n - do not use an alias
d - use the default (calculated) alias
a - ask to confirm the alias name
エイリアスは、いくつかのルールに従って決定されます。1. テーブル名に「_」が含まれている場合は、区切り文字として使用します。
MY_TABLE_NAME --> MTN
my_table_name --> mtn
My_table_NAME --> MtN
2. テーブル名に「_」が含まれていないが、大文字と小文字が混在している場合は、大文字と小文字を区切り文字として使用します。
MyTableName --> MTN
3. テーブル名に「_」が含まれておらず、大文字と小文字が混在していない場合は、テーブルの最初の文字を使用します。
               mytablename --> m
               MYTABLENAME --> M
omni_sql_ignorecase
デフォルト: 'ignorecase'の現在の設定
有効な設定は0または1です。
補完を開始する前にいくつかの文字を入力すると、リストは、文字のリストで始まるエントリのみを表示するようにフィルターされます。このオプションが0に設定されている場合、リストは大文字と小文字を区別してフィルターされます。
omni_sql_include_owner
デフォルト: dbext.vim 3.00がインストールされていない限り0
有効な設定は0または1です。
テーブル、プロシージャ、またはビューを補完し、dbext.vim 3.00以上を使用する場合、オブジェクトのリストには所有者の名前も含まれます。これらのオブジェクトを補完し、omni_sql_include_ownerが有効になっている場合、所有者の名前が置き換えられます。
omni_sql_precache_syntax_groups
デフォルト: ['syntax','sqlKeyword','sqlFunction','sqlOption','sqlType','sqlStatement']
sqlcompleteは、他の補完プラグインと組み合わせて使用できます。これはsql-completion-filetypesで説明されています。ファイルタイプが一時的にSQLに変更されると、sqlcompletionプラグインはこのオプションで指定されたリストにリストされている構文グループをキャッシュします。

4.5 SQLマップ sql-completion-maps

デフォルトのSQLマップについては、このドキュメントの他のセクションで詳しく説明されています。各マップの簡単な説明とともに、マップのリストを示します。
静的マップ
これらは、Vimの構文強調表示ルールを使用して補完リストに入力するマップです。
<C-C>a
すべてのSQL構文項目を表示します。
<C-C>k
'sqlKeyword'として定義されているすべてのSQL構文項目を表示します。
<C-C>f
'sqlFunction'として定義されているすべてのSQL構文項目を表示します。
<C-C>o
'sqlOption'として定義されているすべてのSQL構文項目を表示します。
<C-C>T
'sqlType'として定義されているすべてのSQL構文項目を表示します。
<C-C>s
'sqlStatement'として定義されているすべてのSQL構文項目を表示します。動的マップ〜
これらは、dbext.vimプラグインを使用して補完リストに入力するマップです。
<C-C>t
テーブルのリストを表示します。
<C-C>p
プロシージャのリストを表示します。
<C-C>v
ビューのリストを表示します。
<C-C>c
特定のテーブルのカラムのリストを表示します。
<C-C>l
特定のテーブルのカラムのカンマ区切りリストを表示します。
<C-C>L
特定のテーブルのカラムのカンマ区切りリストを表示します。これは、補完ウィンドウがアクティブな場合にのみ使用する必要があります。
<Right>
完了ウィンドウで現在強調表示されているテーブルのカラム一覧を表示します。<Right>はほとんどのUnixシステムでは認識されないため、このマッピングはWindowsプラットフォームでのみ作成されます。Unixでも同様の機能を使用したい場合は、別のキーを選択し、vimrcに同じマッピングを作成してください。
<Left>
テーブルの一覧を表示します。<Left>はほとんどのUnixシステムでは認識されないため、このマッピングはWindowsプラットフォームでのみ作成されます。Unixでも同様の機能を使用したい場合は、別のキーを選択し、vimrcに同じマッピングを作成してください。
<C-C>R
このマッピングは、すべてのキャッシュされたアイテムを削除し、SQL補完によるアイテム一覧の再生成を強制します。
マッピングのカスタマイズ
必要に応じて、追加のキーマッピングをいくつでも作成できます。一般的に、マッピングは異なる構文ハイライトグループを指定します。
デフォルトのマッピングの作成を望まない場合、またはキーの選択がプラットフォームで機能しない場合(Unixではよくあるケース)、init.vimで以下の変数を定義します。
let g:omni_sql_no_default_maps = 1
ftplugin/sql.vimを直接編集しないでください!このファイルを編集すると、将来のアップデートで変更が上書きされます。Vimには、Vim配布物に含まれるファイルを変更せずにカスタマイズを行うことができる特別なディレクトリ構造があります。マッピングをカスタマイズする場合は、after/ftplugin/sql.vim(after-directoryを参照)を作成し、独自のキーストロークを使用してftplugin/sql.vimからの同じマッピングをそこに配置します。<C-C>はWindowsとUnixの両方のプラットフォームで動作するため選択されました。Windowsプラットフォームでは、<C-Space>またはALTキーも使用できます。

4.6 他のファイルタイプとの使用 sql-completion-filetypes

多くの場合、SQLはさまざまなファイルタイプで使用できます。たとえば、Perl、Java、PHP、Javascriptはすべてデータベースと対話できます。編集中の現在の言語のSQL補完と補完機能の両方が必要な場合があります。
これは、次の手順で簡単に有効にできます(Perlファイルの場合)。
1.  :e test.pl
2.  :set filetype=sql
3.  :set ft=perl
ステップ1
Perlファイルの編集から始めます。Vimはファイルタイプを自動的に「perl」に設定します。デフォルトでは、Vimは適切なファイルタイプファイルftplugin/perl.vimを実行します。ft-syntax-omniの手順に従って構文補完プラグインを使用している場合、'omnifunc'オプションは「syntax#Complete」に設定されています。<C-X><C-O>を押すと、Perlの構文アイテムを含むオムニポップアップが表示されます。
ステップ2
ファイルタイプを手動で「sql」に設定すると、適切なファイルタイプファイルftplugin/sql.vimも起動されます。このファイルは、SQL補完用の多くのバッファ固有のマッピングを定義します(sql-completion-mapsを参照)。これで、これらのマッピングが作成され、SQL補完プラグインが初期化されました。すべてのSQL構文アイテムがキャッシュされて準備が完了しました。SQLファイルタイプスクリプトは、2つの異なる補完プラグインを使用しようとしていることを検出します。SQLマッピングは<C-C>で始まるため、マッピングは使用時に'omnifunc'を切り替えます。そのため、<C-X><C-O>を使用してPerlの補完(構文補完プラグインを使用)を継続し、<C-C>を使用してSQL補完機能を使用できます。
ステップ3
ファイルタイプをPerlに戻すと、通常の「perl」関連のすべてのアイテムが元の状態に戻ります。
メイン
コマンド索引
クイックリファレンス