Nvim の:help
ページ。 生成元は ソース で、tree-sitter-vimdoc パーサーを使用しています。
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
]] move forward to the next 'begin' [[ move backwards to the previous 'begin' ][ move forward to the next 'end' [] move backwards to the previous 'end'
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
\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
SQLSetTypeパラメーターなしでこの関数を実行すると、インデントと構文スクリプトがデフォルトに戻されます。sql-type-defaultを参照してください。オプションのパラメーターを補完するには、
<Tab>
キーを使用できます。:SQLSetType :SQLSetType sqloracle :SQLSetType sqlanywhere :SQLSetType sqlinformix :SQLSetType mysql最も簡単な方法は、
<Tab>
文字を使用することです。これにより、最初にコマンド名(SQLSetType)が補完され、スペースと別の<Tab>
の後で、使用可能なVimスクリプト名のリストが表示されます。:SQL<Tab><space><Tab>
SQLGetTypeこれは次のようにエコーします。
Current SQL dialect in use:sqlanywhere
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
Unix ~/.config/nvim/syntax/sqlite.vim ~/.config/nvim/indent/sqlite.vimSQLSetType関数に変更を加える必要はありません。新しいSQLファイルが自動的に検出され、SQLSetTypeコマンドを発行するとロードされます。
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, ...
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
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」をポップアップリストから選択します。BEGIN DECLARE customer_id <C-C>T <-- Choose a type from the list
<C-C>
tを押すと、テーブルのリストが表示されます。dbextがテーブルリストを作成している間に遅延があります。リストが表示された後、<C-W>
を押します。これにより、ポップアップウィンドウと、リストがアクティブになったときに既に選択されているテーブル名が削除されます。<C-C>
tを押すと、dbextプラグインを介して接続したデータベース内のテーブルのリストが表示されます。注:すべてのSQL補完ポップアップは、キーマップを押す前にプレフィックスを入力することをサポートしています。これにより、ポップアップウィンドウの内容が、これらの文字で始まる項目のみに制限されます。<C-C>
cでトリガーされます。<Right>
を使用してカラムリストをトリガーします。<C-C>
tをもう一度押して、テーブルのリストを表示します。<Right>
を押します。これにより、テーブルのリストが、ハイライト表示されているテーブルのカラムのリストに置き換えられます(同じ短い遅延の後)。<Left>
を押すと、カラムリストが再びテーブルのリストに置き換わります。これにより、テーブルとカラムリストを非常に迅速にドリルダウンできます。<Right>
をもう一度押します。カラムリストがキャッシュされているため、遅延がないことに気付くでしょう。キャッシュされたテーブルのスキーマを変更した場合は、<C-C>
Rを押してSQL補完キャッシュをクリアできます。<Right>
と<Left>
は、補完ウィンドウがアクティブなときに動作するように設計されています。補完ポップアップウィンドウがアクティブでない場合、通常の<Right>
または<Left>
が実行されます。One column at a time:
<C-C>
tを押してテーブルのリストを表示します。2. リストからテーブルを選択します。3. <Right>
を押してカラムのリストを表示します。4. リストからカラムを選択してEnterキーを押します。5. 「,」を入力して<C-C>
cを押します。カラムリストを生成するには、一般的にカーソルをテーブル名の上に置く必要があります。プラグインはこの名前を使用して、カラムリストを取得するテーブルを決定します。この手順では、カーソルをテーブル名の上に置かずに<C-C>
cを押すため、表示されるカラムリストは前のテーブルのものです。別のカラムを選択して続行します。6. 必要に応じて手順5を繰り返します。All columns for a table:
<C-C>
tを押してテーブルのリストを表示します。2. カラムリストが必要なテーブルをハイライト表示します。3. <Enter>
を押してリストからテーブルを選択します。4. <C-C>
lを押して、このテーブルのすべてのカラムのカンマ区切りリストを要求します。5. 手順3で選択したテーブル名に基づいて、プラグインは妥当なテーブルエイリアスを決定しようとします。その後、エイリアスを受け入れるか変更するかを促されます。OKを押します。6. テーブル名は、テーブルのカラムリストが、エイリアスが各カラムの先頭に付加されたカンマ区切りリストに置き換えられます。7. 手順3と4は、<C-C>
Lを押すことで置き換えることができます。これには、リストで現在ハイライトされているテーブルを選択するための<C-Y>
がマップに埋め込まれています。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」)。<C-C>
pは、データベースに格納されているストアドプロシージャのリストを表示します。<C-C>
vは、データベース内のビューのリストを表示します。omni_sql_no_default_maps
<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
MY_TABLE_NAME --> MTN my_table_name --> mtn My_table_NAME --> MtN
MyTableName --> MTN
mytablename --> m MYTABLENAME --> M omni_sql_ignorecase
omni_sql_include_owner
omni_sql_precache_syntax_groups
<C-C>a
<C-C>k
<C-C>f
<C-C>o
<C-C>T
<C-C>s
<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
let g:omni_sql_no_default_maps = 1ftplugin/sql.vimを直接編集しないでください!このファイルを編集すると、将来のアップデートで変更が上書きされます。Vimには、Vim配布物に含まれるファイルを変更せずにカスタマイズを行うことができる特別なディレクトリ構造があります。マッピングをカスタマイズする場合は、after/ftplugin/sql.vim(after-directoryを参照)を作成し、独自のキーストロークを使用してftplugin/sql.vimからの同じマッピングをそこに配置します。
<C-C>
はWindowsとUnixの両方のプラットフォームで動作するため選択されました。Windowsプラットフォームでは、<C-Space>
またはALTキーも使用できます。1. :e test.pl 2. :set filetype=sql 3. :set ft=perl
<C-X>
<C-O>
を押すと、Perlの構文アイテムを含むオムニポップアップが表示されます。<C-C>
で始まるため、マッピングは使用時に'omnifunc'を切り替えます。そのため、<C-X>
<C-O>
を使用してPerlの補完(構文補完プラグインを使用)を継続し、<C-C>
を使用してSQL補完機能を使用できます。