Up: 目次   [Index]


SQL ファイルタイププラグイン

*ft_sql.txt*	For Vim バージョン 8.1.  Last change: 2013 May 15

by David Fishburn

これは SQL ファイルを編輯するためのファイルタイププラグインです。

Structured Query Language (SQL) はリレーショナルデータベースと對話するための文を規定した規格です。Vim には SQL 內を移動、インデント、構文ハイライトする機能が備はつてゐます。

1. 移動|sql-navigation|
    1.1 Matchit|sql-matchit|
    1.2 オブジェクト單位の移動|sql-object-motions|
    1.3 SQL 獨自のオブジェクト單位移動|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. SQL オムニ補完|sql-completion|
    4.1 static モード|sql-completion-static|
    4.2 dynamic モード|sql-completion-dynamic|
    4.3 SQL 補完のチュートリアル|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 ファイルタイププラグインはファイル內の移動を支援するためのオプションを多數備へてゐます。

1.1 Matchit

matchit プラグイン (http://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 Text Object Motions

Vim には既定でテキストオブジェクトを操作するキーがたくさん定義されてゐます |object-motions|。このファイルタイププラグインはこれらのキーの一部を SQL 用に再定義します。

SQL ファイルを編輯するとき、以下のノーマルモード |Normal| とビジュアルモード |Visual| のマップが定義されます:

]]次の ’begin’ へ移動する
[[前の ’begin’ へ移動する
][次の ’end’ へ移動する
[]前の ’end’ へ移動する

1.3 SQL 獨自のオブジェクト單位移動

ほとんどのリレーショナルデータベースはテーブル、インデックス、トリガー、ストアドプロシージャなど樣々な標準的な機能を備へてゐます。また、ベンダーごとに樣々な獨自オブジェクトがあります。次のマップたちはこれらのオブジェクト閒を移動するために作られてゐます。お使ひのデータベースによつてオブジェクトのリストを調整できるやうでなればなりません。このファイルタイププラグインは標準オブジェクトのほとんどと、多くの追加的なオブジェクトを定義してゐます。これを可能な限りフレキシブルにするために、|vimrc| でオブジェクトのリストを上書きできるやうになつてゐます。次のやうにします:

let g:ftplugin_sql_objects = 'function,procedure,event,table,trigger' .
            \ ',schema,service,publication,database,datatype,domain' .
            \ ',index,subscription,synchronization,view,variable'

上記のリストを對象として、以下のノーマルモード |Normal| とビジュアルモード |Visual| のマップが定義されてゐます:

]}次の ’create <オブジェクト名>’ へ移動する
[{前の ’create <オブジェクト名>’ へ移動する

繰り返し ]} を押すとこれらの create 文の閒を循環して移動します:

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 (
    ...
);

既定では CREATE 文だけを檢索します。|vimrc| に以下を書くと、他の文も對象にすることができます:

let g:ftplugin_sql_statements = 'create,alter'

このファイルタイププラグインは以下の 3 種類のコメントを定義してゐます:

1.  --
2.  //
3.  /*
     *
     */

コメントを對象として、以下のノーマルモード |Normal| とビジュアルモード |Visual| でのマップが定義されてゐます:

]"次のコメントの開始位置へ移動
["前のコメントの終了位置へ移動

1.4 マクロ

|'define'| に以下の正規表現を設定することにより、マクロ定義を見つけるための Vim の機能に對應してゐます:

\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 に對應してゐます。SQL の一部分はベンダー閒で移植可能です (例: CREATE TABLE, CREATE INDEX) が、ベンダー固有の擴張が大量にあります。Oracle は "CREATE OR REPLACE" 構文、CREATE TABLE 文でのカラム既定値の指定、プロシージャ言語 (ストアドプロシージャとトリガー) を備へてゐます。

標準の Vim ディストリビューションには Oracle の PL/SQL に基づいた構文ハイライトが附屬してゐます。SQL インデントスクリプトは Oracle と SQL Anywhere 用に動作します。ファイルタイププラグインはすべてのベンダー用に動作し、ベンダー中立を保ちつつも擴張可能であるべきです。

現在樣々なベンダーに對應してゐます。これは構文スクリプトを通して實現してゐます。殘念なことに、複數の構文ルールを切り替へるには以下のどれかを作成しなければなりません:

  1. 新しいファイルタイプ
  2. 獨自の自動コマンド
  3. コマンド手動實行

大多數の人は 1 つのベンダーのデータベース製品しか扱はないため、|vimrc| で既定値を設定しておくとよいでせう。

2.1 SQLSetType

複數のデータベースを扱つてゐる人々にとつては、バッファごとまたは任意のタイミングでベンダーのルール(インデント、構文)を切り替へられるとよいでせう。ftplugin/sql.vim では次のコマンドが定義されてゐます:

SQLSetType

このコマンドを引數なしで實行すると、インデントと構文スクリプトが既定値に戾ります。既定値は |sql-type-default| を參照してください。Vi 互換モードをオフにしてゐると (|'compatible'|)、<Tab> キーで引數を補完できます。

コマンド名とスペースをタイプした後、引數を指定するために補完を利用できます。このコマンドは source したい Vim scriptの名前を受け取ります。|cmdline-completion| 機能により、SQLSetType コマンドは |'runtimepath'| から名前に ’sql’ を含む Vim script を檢索します。これは名前のスペルから推測を取り出します。以下が例です:

:SQLSetType
:SQLSetType sqloracle
:SQLSetType sqlanywhere
:SQLSetType sqlinformix
:SQLSetType mysql

もつとも簡單な方法は、<Tab> を使つてまずコマンド名 (SQLSetType) を補完し、スペースに續いてもう一度 <Tab> を押すと利用可能な Vim script の名前のリストが表示されます:

:SQL<Tab><space><Tab>

2.2 SQLGetType

現在、どの SQL の方言が使はれてゐるかを調べるには、コマンド SQLGetType を使ひます。ftplugin/sql.vim で次のコマンドが定義されてゐます:

SQLGetType

このコマンドを使ふと、以下のやうな文字列がエコー表示されます:

Current SQL dialect in use:sqlanywhere

2.3 SQL 方言の既定値

すでに述べたやうに、Vim の既定の構文ルールは Oracle (PL/SQL) に基づいてゐます。これを上書きするには、次のうちどれかを |vimrc| に書きます:

let g:sql_type_default = 'sqlanywhere'
let g:sql_type_default = 'sqlinformix'
let g:sql_type_default = 'mysql'

次を |vimrc| に書くと:

let g:sql_type_default = 'sqlinformix'

次囘 SQL ファイルを編輯するときには以下のスクリプトが自動的に讀み込まれます:

ftplugin/sql.vim
syntax/sqlinformix.vim
indent/sql.vim

Note”
indent/sqlinformix.sql は讀み込まれてゐないことに注意してください。Informix 用のインデントファイルは存在しないため、既定のインデントファイルが讀み込まれてゐます。

3. SQL 方言を追加する

Vim の標準ディストリビューションにスクリプトが含まれてゐない SQL 方言を扱ふときは、對應するスクリプトが投稿されてゐないか http://www.vim.org をチェックしてみてください。もしなければ既存のスクリプトをコピーしてカスタマイズしませう。詳しくは |filetype-plugins| を參照してください。

スクリプトを識別しやすくするために、ファイル名の先頭に "sql" といふ接頭辭をつけてください。例へば SQLite データベース用のカスタマイズを作りたい場合は、以下のファイルを作成します:

Unix

~/.vim/syntax/sqlite.vim
~/.vim/indent/sqlite.vim

Windows

$VIM/vimfiles/syntax/sqlite.vim
$VIM/vimfiles/indent/sqlite.vim

SQLSetType コマンドには變更を加へる必要はありません。SQLSetType コマンドを實行すると自動的に新しい SQL ファイルが選ばれ、讀み込まれます。

4. SQL オムニ補完

Vim 7 にはプラグイン開發者が任意の言語用のコード補完を作るためのインターフェイスと函數が備はつてゐます。Vim 7 には SQL 言語用のコード補完が含まれてゐます。

SQL 補完プラグインには static と dynamic といふ2つのモードがあります。static モードは 現在の構文强調ルールから生成されたデータをもとにポップアップを表示します。dynamic モードはデータベースから直接抽出したデータをもとにポップアップを表示します。このデータにはテーブルのリスト、カラムのリスト、プロシージャ名などが含まれます。

4.1 static モード

static ポップアップはファイルタイプが SQL のファイルを編輯してゐるときに、使用中の構文ルールで定義された項目を含んで表示されます。プラグインは、表示される項目のリストを絞り込むための樣々なマップを用意してゐます。

既定の static マップは次の通りです:

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>

"<C-C>" のキーは環境によつては動作しないかもしれません。そこで、以下の行を |.vimrc| に書くことで "<C-C>" を他のキーに變更できます:

let g:ftplugin_sql_omni_key = '<C-C>'

static マップ (構文强調グループに基づいてゐる) は以下の形式で定義されてゐます:

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

- 插入モードでのマップを作成する

<buffer>

- このバッファに對してのみ

<C-C>k

- マップするキー

<C-\><C-O>

- コマンドを 1 個實行し、插入モードに戾る

:call sqlcomplete#Map(

- 他の補完プラグインと組み合はせて使へるやうにするために、いくつかの管理維持する函數を實行します。

どの項目を補完して欲しいかを SQL 補完プラグインに指示します。

この場合は構文强調グループ ’sqlKeyword’ の項目を表示するやう指定してゐます。

選擇可能な構文强調グループ名のリストは、SQL ファイルを編輯中に次のコマンドで表示できます。

:syntax list
’sqlKeyword’

- 構文强調グループ sqlKeyword の項目を表示します。

’sqlKeyword\w*’

- Vim 7.4 からは、正規表現を使つて構文强調グループを選擇できます。

)<CR>

- :let コマンドを實行します。

<C-X><C-O>

- 標準のオムニ補完のキーストロークを實行します。sqlcomplete#Map 函數の引數に ’sqlKeyword’ を渡してあるので、SQL 補完プラグインは構文强調グループsqlKeyword の項目をポップアップするやうになつてゐます。プラグインは Vim が再起動するまでこの結果をキャッシュします。構文のリストは syntaxcomplete プラグインを使つて抽出されます。

’syntax’ キーワードを使ふのは特別な場合です。これは syntaxcomplete プラグインにすべての構文アイテムを抽出するやう指示します。そのためこれは Vim のどの SQL 構文ファイルに對しても有效です。これを書いてゐる時點でこれは SQL 方言用の 10 個の構文ファイルを含んでゐます (上のセクション 3 |sql-dialects| を參照)。

構文ファイルから抽出される項目の例を以下に示します:

全部

- 全構文强調グループの中身

- Select, Insert, Update, Delete, Create, Alter, ...

函數

- Min, Max, Trim, Round, Date, ...

キーワード

- Index, Database, Having, Group, With

オプション

- Isolation_level, On_error, Qualify_owners, Fire_triggers, ...

- Integer, Char, Varchar, Date, DateTime, Timestamp, ...

4.2 dynamic モード

dynamic モードではデータベースから直接抽出したデータを元にポップアップを表示します。dynamic 機能を有效にするためには dbext.vim をインストールしなければなりません(http://vim.sourceforge.net/script.php?script_id=356)。

dynamic モードは SQL 補完プラグインのいくつかの機能から使はれてゐます。dbext プラグインをインストールしたら dbext-tutorial の設定と使ひ方を讀んでください。dbext を使ふと SQL 補完プラグインがテーブル、プロシージャ、ビュー、カラムのリストを表示できるやうになります。

テーブルリスト

- 全スキーマ所有者の全テーブル

プロシージャリスト

- 全スキーマ所有者の全ストアドプロシージャ

ビューリスト

- 全スキーマ所有者の全ビュー

カラムリスト

- 選擇したテーブル內のカラム

これらのリストをポップアップを表示するには、插入モードで以下のキーを使ひます (ここで <C-C>CTRL キーを押しながら C キーを押すといふ意味です):

テーブルリスト

- <C-C>t
- <C-X><C-O> (既定のマップはテーブルリスト)

ストアドプロシージャリスト

- <C-C>p

ビューリスト

- <C-C>v

カラムリスト

- <C-C>c

ドリルイン/アウト

- テーブルリストのポップアップウィンドウを表示中に <Right> を押すと現在選擇されてゐるテーブルのカラムリストの表示に切り替はります。

- カラムリストのポップアップウィンドウを表示中に <Left> を押すとテーブルリスト表示に切り替はります。

- これを使へばテーブルリストとカラムリストの表示を素早く切り替へることができます。

- <Right><Left> のキーも |.vimrc| により變更できます

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 補完プラグインの主な機能を一通り紹介することを意圖して次のことが書かれてゐます:

まづ、新規バッファを作成しませう:

:e tutorial.sql

static な機能

各種のリストを表示するには、單に插入モードで次をタイプします:

<C-C>s   (SQL 文を表示する)

そしてリストの中を "select" まで下に移動していきます。探してゐる項目をよく知つてゐる場合、例へばそれが "s" といふ文字で始まることを知つてゐる場合は、その文字を續けてタイプできます。"se" とタイプしてから (引用符はタイプしません):

<C-Space>t

を押してみてください。 "select" が選擇されたところで <Enter> を押すとその項目を確定します。次に

* fr<C-C>a (すべての構文アイテムを表示する)

とタイプしてみてください。"from" が候補に現れるでせう。

ストアドプロシージャを書くときには型リストが便利です。型リストはそのデータベースがサポートしてゐるすべての型を含んでゐます。ただしこれはお使ひの構文ファイルに依存します。SQL Anywhere 構文ファイル(sqlanywhere.vim)は以下のやうな場合に對應してゐます:

BEGIN
   DECLARE customer_id <C-C>T <-- リストから型を選ぶ

dynamic な機能

dynamic な機能を使ふにはまづ dbext.vim (http://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 テーブル補完

dbext により接續したデータベース內のテーブルのリストを表示するには <C-c>t を押します。

Note:
SQL 補完ポップアップはすべてキーマップの前のプリフィックスに對應してゐます。プリフィックスを指定すると、ポップアップウィンドウの內容がその文字列で始まるものだけに制限されます。

4.3.2 カラム補完

SQL 補完プラグインは特定のテーブルのカラムのリストを表示することもできます。このカラム補完は <C-C>c で起動できます。

Note:
以下の例ではポップアップウィンドウの表示中に <Right> でカラムリストを表示してゐます。

カラム補完を使用してゐる樣子の例:

Note:
<Right><Left> は補完ウィンドウがアクティブな狀態で動作するやう設計されてゐます。補完のポップアップウィンドウがアクティブでない場合はノーマルモードでの <Right><Left> の動作になります。

SQL 文を動的に組み立てる方法を見てゐきませう。select 文にはカラムのリストが必要です。SQL 補完プラグインを使つてカラムのリストを組み立てる方法は 2 通りあります。 一度に 1 カラムを插入する方法:

  1. SELECT を入力した後に <C-C>t を押してテーブルリストを表示します。
  2. リストからテーブルを選擇します。
  3. <Right> を押してカラムリストを表示します。
  4. リストからカラムを選擇してエンターを押します。
  5. "," を入力して <C-C>c を押します。通常、カラムリストを生成するにはカーソルをテーブル名の上に置かねばなりません。プラグインはその名前を使つてどのテーブルからカラム リストを抽出するか決定します。このステップではカーソルをテーブル名の上に置かずに <C-C>c を押したため、表示されるカラムリストは前に使つたテーブルが對象となります。そしてカラムを選擇して續けます。
  6. ステップ 5 を必要なだけ繰り返します。

テーブルの全カラムを插入する方法:

  1. SELECT と入力してから <C-C>t を押すとテーブルのリストが表示されます。
  2. カラムリストを表示したいテーブルにカーソルを合はせます。
  3. <Enter> を押してテーブルを選擇します。
  4. <C-C>l を押してそのテーブル內の全カラムのコンマ區切りのリストを表示させます。
  5. ステップ 3 で選んだテーブル名に基づいてプラグインは妥當なテーブルエイリアスを決定します。ここでそのエイリアスを受け入れるかどうかプロンプトが表示されます。OK を押してください。
  6. するとテーブル名が消え、代はりにそのテーブルのカラムリスト (各カラム名の前にエイリアスがつき、コンマ區切りになつたもの) が插入されます。
  7. <C-C>L を押すとステップ 3 と 4 を同時に實行できます。これは、リストの中で現在選ばれてゐるテーブルで決定するためにマップの中に <C-Y> を埋め込んでゐます。

select 文を書くための特別な機能があります。次の文を書く場合を考へてください:

select *
  from customer c,
       contact cn,
       department as dp,
       employee e,
       site_options so
 where c.

插入モードで "customer" テーブルのエイリアスである最後の "c." を入力した後、<C-C>c または <C-X><C-O> を押してみてください。すると customer テーブルのカラムのリストがポップアップ表示します。これは、select 文の開始位置を見て FROM 句で指定されたテーブルのリストを探してゐます。この場合は文字列 "customer c" ("c" は customer テーブルのエイリアス) が發見されます。省略可能なキーワード "AS" にも對應してゐます。例: "customer AS c"

4.3.3 プロシージャ補完:

テーブルリストと同樣に、<C-C>p でデータベースに登錄されてゐるストアドプロシージャのリストを表示できます。

4.3.4 ビュー補完:

テーブルリストと同樣に、<C-C>v でデータベースに登錄されてゐるビューのリストを表示できます。

4.4 補完のカスタマイズ

|vimrc| でオプションをセットすることによつて SQL 補完プラグインをカスタマイズできます:

omni_sql_no_default_maps
omni_sql_use_tbl_alias

エイリアスは以下の規則によつて決定されます:

  1. テーブル名が ’_’ を含んでゐれば、それを區切り文字に使ひます:
    MY_TABLE_NAME --> MTN
    my_table_name --> mtn
    My_table_NAME --> MtN
    
  2. テーブル名が ’_’ を含んでゐないが大文字・小文字が混在してゐれば、それを區切り文字に使ひます:
    MyTableName --> MTN
    
  3. テーブル名が ’_’ を含んでゐなく、大文字・小文字も混在してゐなければテーブル名の最初の文字を使ひます:
    mytablename --> m
    MYTABLENAME --> M
    
omni_sql_ignorecase
omni_sql_include_owner
omni_sql_precache_syntax_groups

4.5 SQL 關聯のマップ

既定の SQL 關聯のマップはこのドキュメントの他の節で詳しく說明しました。ここでは簡潔な說明つきのマップのリストを示します。

static モードのマップ

以下は Vim の構文强調ルールを使つて補完リストを作成するマップです。

<C-C>a

SQL 構文アイテムを全て表示します。

<C-C>k

sqlKeyword’ と定義された構文アイテムを全て表示します。

<C-C>f

sqlFunction’ と定義された構文アイテムを全て表示します。

<C-C>o

sqlOption’ と定義された構文アイテムを全て表示します。

<C-C>T

sqlType’ と定義された構文アイテムを全て表示します。

<C-C>s

sqlStatement’ と定義された構文アイテムを全て表示します。

dynamic モードのマップ

以下は dbext.vim プラグインを使用して補完リストを作成するマップです。

<C-C>t

テーブルのリストを表示します。

<C-C>p

プロシージャのリストを表示します。

<C-C>v

ビューのリストを表示します。

<C-C>c

指定テーブルのカラムのリストを表示します。

<C-C>l

指定テーブルのカラムのリストをコンマ區切りで表示します。

<C-C>L

指定テーブルのカラムのリストをコンマ區切りで表示します。補完ウィンドウがアクティブなときだけ使用できます。

<Right>

現在補完リストでカーソルが指してゐるテーブルのカラムリストを表示します。ほとんどの Unix システムでは <Right> を認識できないため、このマップは Windows でのみ定義されます。同じ機能を Unix でも利用するには他のキーを選んで自分の vimrc で同じマップを定義してください。

<Left>

テーブルのリストを表示します。ほとんどの Unix システムでは <Left> を認識できないため、このマップは Windows でのみ定義されます。同じ機能を Unix でも利用するには他のキーを選んで自分の vimrc で同じマップを定義してください。

<C-C>R

キャッシュされた項目を全て削除し、項目のリストを再生成するやう强制します。

マップのカスタマイズ

好みに應じてマップを作成できます。一般的に、これらのマップは構文强調グループを定義します。

デフォルトで作成されるマップが好みでなかつたり、そのキーがお使ひのプラットフォームでは動作しない場合、次の變數を |vimrc| で定義してください:

let g:omni_sql_no_default_maps = 1

ftplugin/sql.vim を直接編輯することはやめてください。このファイルを變更しても、將來アップデートしたときその變更は上書きされてしまひます。Vim は、ディストリビューションに含まれてゐるファイルを變更することなくカスタマイズを行ふために after といふディレクトリ構造を備へてゐます。マップをカスタマイズするには after/ftplugin/sql.vim を作成します (|after-directory| を參照)。そしてその中で ftplugin/sql.vim に書かれてゐるのと同じマップを、好みのキーストロークに對して定義します。<C-C> が選ばれたのは、それが Windows、*nix のどちらでも動作するからです。Windows では <C-Space>ALT キーを使ふこともできます。

4.6 他のファイルタイプのファイル內で使ふには

SQL を他のファイルタイプのファイル內で使ふ機會はよくあります。例へば Perl, Java, PHP, Javascript はどれもデータベースと對話できます。編輯中の言語の補完機能に加へて SQL 補完も使ひたいといふ狀況はよくあります。

そんな場合は、以下のステップによつて簡單に實現できます (Perl の例です):

  1. :e test.pl
  2. :set filetype=sql
  3. :set ft=perl

ステップ 1

Perl ファイルの編輯を始めます。自動的にファイルタイプが "perl" になります。デフォルトで、ファイルタイプ・ファイルの 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 種類の補完プラグインを使はうとしてゐることを檢出します。<C-C> で始まる SQL 用のマップが呼び出されると、その實行中だけ |'omnifunc'| を切り替へます。そのため、<C-X><C-O> は (構文補完プラグインによる) Perl 用の補完のために使用し、<C-C> は SQL 補完機能のために使用できます。

ステップ 3

ファイルタイプを Perl に戾すと、"perl" に關聯する全ての構文要素が元通りになります。


Up: 目次   [Index]