/usr/share/vim/vim80/doc
NameSizeModeActions
arabic.txt119360644editdlrm
autocmd.txt654020644editdlrm
change.txt748770644editdlrm
channel.txt308190644editdlrm
cmdline.txt472830644editdlrm
debug.txt71820644editdlrm
debugger.txt57440644editdlrm
develop.txt223440644editdlrm
diff.txt165250644editdlrm
digraph.txt621230644editdlrm
editing.txt731760644editdlrm
eval.txt4444620644editdlrm
farsi.txt97030644editdlrm
filetype.txt266470644editdlrm
fold.txt236940644editdlrm
ft_ada.txt182470644editdlrm
ft_rust.txt95260644editdlrm
ft_sql.txt306940644editdlrm
gui.txt455920644editdlrm
gui_w32.txt189160644editdlrm
gui_x11.txt294800644editdlrm
hangulin.txt32910644editdlrm
hebrew.txt57140644editdlrm
help.txt85780644editdlrm
helphelp.txt143380644editdlrm
howto.txt29110644editdlrm
if_cscop.txt193610644editdlrm
if_lua.txt146420644editdlrm
if_mzsch.txt118230644editdlrm
if_ole.txt74050644editdlrm
if_perl.txt111490644editdlrm
if_pyth.txt379440644editdlrm
if_ruby.txt80140644editdlrm
if_sniff.txt2660644editdlrm
if_tcl.txt230260644editdlrm
indent.txt394270644editdlrm
index.txt764430644editdlrm
insert.txt831560644editdlrm
intro.txt392260644editdlrm
map.txt646680644editdlrm
mbyte.txt593060644editdlrm
message.txt312300644editdlrm
mlang.txt78500644editdlrm
motion.txt516020644editdlrm
netbeans.txt369980644editdlrm
options.txt3891160644editdlrm
os_390.txt47530644editdlrm
os_amiga.txt54610644editdlrm
os_beos.txt109830644editdlrm
os_dos.txt120210644editdlrm
os_mac.txt68510644editdlrm
os_mint.txt14020644editdlrm
os_msdos.txt5180644editdlrm
os_os2.txt2940644editdlrm
os_qnx.txt40710644editdlrm
os_risc.txt3230644editdlrm
os_unix.txt25950644editdlrm
os_vms.txt321000644editdlrm
os_win32.txt133480644editdlrm
pattern.txt593210644editdlrm
pi_getscript.txt210780644editdlrm
pi_gzip.txt13210644editdlrm
pi_logipat.txt41860644editdlrm
pi_netrw.txt1755500644editdlrm
pi_paren.txt22690644editdlrm
pi_spec.txt41220644editdlrm
pi_tar.txt62230644editdlrm
pi_vimball.txt118530644editdlrm
pi_zip.txt72290644editdlrm
print.txt311580644editdlrm
quickfix.txt690210644editdlrm
quickref.txt712560644editdlrm
quotes.txt127430644editdlrm
recover.txt106940644editdlrm
remote.txt84200644editdlrm
repeat.txt395730644editdlrm
rileft.txt49760644editdlrm
russian.txt30900644editdlrm
scroll.txt140710644editdlrm
sign.txt68910644editdlrm
spell.txt627810644editdlrm
sponsor.txt71980644editdlrm
starting.txt736220644editdlrm
syntax.txt2174710644editdlrm
tabpage.txt167200644editdlrm
tags3288320644editdlrm
tagsrch.txt366360644editdlrm
term.txt454160644editdlrm
terminal.txt335670644editdlrm
tips.txt205560644editdlrm
todo.txt2962680644editdlrm
uganda.txt140240644editdlrm
undo.txt165390644editdlrm
usr_01.txt70900644editdlrm
usr_02.txt243390644editdlrm
usr_03.txt236050644editdlrm
usr_04.txt190820644editdlrm
usr_05.txt238240644editdlrm
usr_06.txt95870644editdlrm
usr_07.txt159840644editdlrm
usr_08.txt193740644editdlrm
usr_09.txt114500644editdlrm
usr_10.txt291800644editdlrm
usr_11.txt126110644editdlrm
usr_12.txt134240644editdlrm
usr_20.txt137030644editdlrm
usr_21.txt183730644editdlrm
usr_22.txt142970644editdlrm
usr_23.txt125880644editdlrm
usr_24.txt208690644editdlrm
usr_25.txt191140644editdlrm
usr_26.txt82540644editdlrm
usr_27.txt177230644editdlrm
usr_28.txt160150644editdlrm
usr_29.txt201160644editdlrm
usr_30.txt226560644editdlrm
usr_31.txt103940644editdlrm
usr_32.txt53730644editdlrm
usr_40.txt231840644editdlrm
usr_41.txt893010644editdlrm
usr_42.txt137980644editdlrm
usr_43.txt74040644editdlrm
usr_44.txt292110644editdlrm
usr_45.txt179120644editdlrm
usr_90.txt176610644editdlrm
usr_toc.txt92180644editdlrm
various.txt288520644editdlrm
version4.txt139060644editdlrm
version5.txt3085430644editdlrm
version6.txt5770520644editdlrm
version7.txt6747660644editdlrm
version8.txt6842520644editdlrm
visual.txt218430644editdlrm
vi_diff.txt428120644editdlrm
windows.txt530300644editdlrm
workshop.txt46310644editdlrm
Edit: /usr/share/vim/vim80/doc/ft_sql.txt (30694B)
*ft_sql.txt* For Vim version 8.0. Last change: 2013 May 15 by David Fishburn This is a filetype plugin to work with SQL files. The Structured Query Language (SQL) is a standard which specifies statements that allow a user to interact with a relational database. Vim includes features for navigation, indentation and syntax highlighting. 1. Navigation |sql-navigation| 1.1 Matchit |sql-matchit| 1.2 Text Object Motions |sql-object-motions| 1.3 Predefined Object Motions |sql-predefined-objects| 1.4 Macros |sql-macros| 2. SQL Dialects |sql-dialects| 2.1 SQLSetType |SQLSetType| 2.2 SQLGetType |SQLGetType| 2.3 SQL Dialect Default |sql-type-default| 3. Adding new SQL Dialects |sql-adding-dialects| 4. OMNI SQL Completion |sql-completion| 4.1 Static mode |sql-completion-static| 4.2 Dynamic mode |sql-completion-dynamic| 4.3 Tutorial |sql-completion-tutorial| 4.3.1 Complete Tables |sql-completion-tables| 4.3.2 Complete Columns |sql-completion-columns| 4.3.3 Complete Procedures |sql-completion-procedures| 4.3.4 Complete Views |sql-completion-views| 4.4 Completion Customization |sql-completion-customization| 4.5 SQL Maps |sql-completion-maps| 4.6 Using with other filetypes |sql-completion-filetypes| ============================================================================== 1. Navigation *sql-navigation* The SQL ftplugin provides a number of options to assist with file navigation. 1.1 Matchit *sql-matchit* ----------- The matchit plugin (http://www.vim.org/scripts/script.php?script_id=39) provides many additional features and can be customized for different languages. The matchit plugin is configured by defining a local buffer variable, b:match_words. Pressing the % key while on various keywords will move the cursor to its match. For example, if the cursor is on an "if", pressing % will cycle between the "else", "elseif" and "end if" keywords. The following keywords are supported: > 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 *sql-object-motions* ----------------------- Vim has a number of predefined keys for working with text |object-motions|. This filetype plugin attempts to translate these keys to maps which make sense for the SQL language. The following |Normal| mode and |Visual| mode maps exist (when you edit a SQL file): > ]] 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 Predefined Object Motions *sql-predefined-objects* ----------------------------- Most relational databases support various standard features, tables, indices, triggers and stored procedures. Each vendor also has a variety of proprietary objects. The next set of maps have been created to help move between these objects. Depends on which database vendor you are using, the list of objects must be configurable. The filetype plugin attempts to define many of the standard objects, plus many additional ones. In order to make this as flexible as possible, you can override the list of objects from within your |vimrc| with the following: > let g:ftplugin_sql_objects = 'function,procedure,event,table,trigger' . \ ',schema,service,publication,database,datatype,domain' . \ ',index,subscription,synchronization,view,variable' The following |Normal| mode and |Visual| mode maps have been created which use the above list: > ]} move forward to the next 'create ' [{ move backward to the previous 'create ' Repeatedly pressing ]} will cycle through each of these create statements: > create table t1 ( ... ); create procedure p1 begin ... end; create index i1 on t1 (c1); The default setting for g:ftplugin_sql_objects is: > 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' The above will also handle these cases: > create table t1 ( ... ); create existing table t2 ( ... ); create global temporary table t3 ( ... ); By default, the ftplugin only searches for CREATE statements. You can also override this via your |vimrc| with the following: > let g:ftplugin_sql_statements = 'create,alter' The filetype plugin defines three types of comments: > 1. -- 2. // 3. /* * */ The following |Normal| mode and |Visual| mode maps have been created to work with comments: > ]" move forward to the beginning of a comment [" move forward to the end of a comment 1.4 Macros *sql-macros* ---------- Vim's feature to find macro definitions, |'define'|, is supported using this regular expression: > \c\<\(VARIABLE\|DECLARE\|IN\|OUT\|INOUT\)\> This addresses the following code: > 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; Place your cursor on "myVar1" on this line: > WHERE c4 = myVar1; ^ Press any of the following keys: > [d [D [CTRL-D ============================================================================== 2. SQL Dialects *sql-dialects* *sql-types* *sybase* *TSQL* *Transact-SQL* *sqlanywhere* *oracle* *plsql* *sqlj* *sqlserver* *mysql* *postgresql* *psql* *informix* All relational databases support SQL. There is a portion of SQL that is portable across vendors (ex. CREATE TABLE, CREATE INDEX), but there is a great deal of vendor specific extensions to SQL. Oracle supports the "CREATE OR REPLACE" syntax, column defaults specified in the CREATE TABLE statement and the procedural language (for stored procedures and triggers). The default Vim distribution ships with syntax highlighting based on Oracle's PL/SQL. The default SQL indent script works for Oracle and SQL Anywhere. The default filetype plugin works for all vendors and should remain vendor neutral, but extendable. Vim currently has support for a variety of different vendors, currently this is via syntax scripts. Unfortunately, to flip between different syntax rules you must either create: 1. New filetypes 2. Custom autocmds 3. Manual steps / commands The majority of people work with only one vendor's database product, it would be nice to specify a default in your |vimrc|. 2.1 SQLSetType *sqlsettype* *SQLSetType* -------------- For the people that work with many different databases, it is nice to be able to flip between the various vendors rules (indent, syntax) on a per buffer basis, at any time. The ftplugin/sql.vim file defines this function: > SQLSetType Executing this function without any parameters will set the indent and syntax scripts back to their defaults, see |sql-type-default|. If you have turned off Vi's compatibility mode, |'compatible'|, you can use the key to complete the optional parameter. After typing the function name and a space, you can use the completion to supply a parameter. The function takes the name of the Vim script you want to source. Using the |cmdline-completion| feature, the SQLSetType function will search the |'runtimepath'| for all Vim scripts with a name containing 'sql'. This takes the guess work out of the spelling of the names. The following are examples: > :SQLSetType :SQLSetType sqloracle :SQLSetType sqlanywhere :SQLSetType sqlinformix :SQLSetType mysql The easiest approach is to the use character which will first complete the command name (SQLSetType), after a space and another , display a list of available Vim script names: > :SQL 2.2 SQLGetType *sqlgettype* *SQLGetType* -------------- At anytime you can determine which SQL dialect you are using by calling the SQLGetType command. The ftplugin/sql.vim file defines this function: > SQLGetType This will echo: > Current SQL dialect in use:sqlanywhere 2.3 SQL Dialect Default *sql-type-default* ----------------------- As mentioned earlier, the default syntax rules for Vim is based on Oracle (PL/SQL). You can override this default by placing one of the following in your |vimrc|: > let g:sql_type_default = 'sqlanywhere' let g:sql_type_default = 'sqlinformix' let g:sql_type_default = 'mysql' If you added the following to your |vimrc|: > let g:sql_type_default = 'sqlinformix' The next time edit a SQL file the following scripts will be automatically loaded by Vim: > ftplugin/sql.vim syntax/sqlinformix.vim indent/sql.vim > Notice indent/sqlinformix.sql was not loaded. There is no indent file for Informix, Vim loads the default files if the specified files does not exist. ============================================================================== 3. Adding new SQL Dialects *sql-adding-dialects* If you begin working with a SQL dialect which does not have any customizations available with the default Vim distribution you can check http://www.vim.org to see if any customization currently exist. If not, you can begin by cloning an existing script. Read |filetype-plugins| for more details. To help identify these scripts, try to create the files with a "sql" prefix. If you decide you wish to create customizations for the SQLite database, you can create any of the following: > Unix ~/.vim/syntax/sqlite.vim ~/.vim/indent/sqlite.vim Windows $VIM/vimfiles/syntax/sqlite.vim $VIM/vimfiles/indent/sqlite.vim No changes are necessary to the SQLSetType function. It will automatically pickup the new SQL files and load them when you issue the SQLSetType command. ============================================================================== 4. OMNI SQL Completion *sql-completion* *omni-sql-completion* Vim 7 includes a code completion interface and functions which allows plugin developers to build in code completion for any language. Vim 7 includes code completion for the SQL language. There are two modes to the SQL completion plugin, static and dynamic. The static mode populates the popups with the data generated from current syntax highlight rules. The dynamic mode populates the popups with data retrieved directly from a database. This includes, table lists, column lists, procedures names and more. 4.1 Static Mode *sql-completion-static* --------------- The static popups created contain items defined by the active syntax rules while editing a file with a filetype of SQL. The plugin defines (by default) various maps to help the user refine the list of items to be displayed. The defaults static maps are: > imap a :call sqlcomplete#Map('syntax') imap k :call sqlcomplete#Map('sqlKeyword') imap f :call sqlcomplete#Map('sqlFunction') imap o :call sqlcomplete#Map('sqlOption') imap T :call sqlcomplete#Map('sqlType') imap s :call sqlcomplete#Map('sqlStatement') The use of "" can be user chosen by using the following in your |.vimrc| as it may not work properly on all platforms: > let g:ftplugin_sql_omni_key = '' > The static maps (which are based on the syntax highlight groups) follow this format: > imap k :call sqlcomplete#Map('sqlKeyword') imap k :call sqlcomplete#Map('sqlKeyword\w*') This command breaks down as: > imap - Create an insert map - Only for this buffer k - Your choice of key map - 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 ) - Execute the :let command - 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. Using the 'syntax' keyword is a special case. This instructs the syntaxcomplete plugin to retrieve all syntax items. So this will effectively work for any of Vim's SQL syntax files. At the time of writing this includes 10 different syntax files for the different dialects of SQL (see section 3 above, |sql-dialects|). Here are some examples of the entries which are pulled from the syntax files: > 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 Dynamic Mode *sql-completion-dynamic* ---------------- Dynamic mode populates the popups with data directly from a database. In order for the dynamic feature to be enabled you must have the dbext.vim plugin installed, (http://vim.sourceforge.net/script.php?script_id=356). Dynamic mode is used by several features of the SQL completion plugin. After installing the dbext plugin see the dbext-tutorial for additional configuration and usage. The dbext plugin allows the SQL completion plugin to display a list of tables, procedures, views and columns. > 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 To enable the popup, while in INSERT mode, use the following key combinations for each group (where means hold the CTRL key down while pressing the space bar): Table List - t - (the default map assumes tables) Stored Procedure List - p View List - v Column List - c Drilling In / Out - When viewing a popup window displaying the list of tables, you can press , this will replace the table currently highlighted with the column list for that table. - When viewing a popup window displaying the list of columns, you can press , this will replace the column list with the list of tables. - This allows you to quickly drill down into a table to view its columns and back again. - and can be also be chosen via your |.vimrc| > let g:ftplugin_sql_omni_key_right = '' let g:ftplugin_sql_omni_key_left = '' The SQL completion plugin caches various lists that are displayed in the popup window. This makes the re-displaying of these lists very fast. If new tables or columns are added to the database it may become necessary to clear the plugins cache. The default map for this is: > imap R :call sqlcomplete#Map('ResetCache') 4.3 SQL Tutorial *sql-completion-tutorial* ---------------- This tutorial is designed to take you through the common features of the SQL completion plugin so that: > 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). First, create a new buffer: > :e tutorial.sql Static features --------------- To take you through the various lists, simply enter insert mode, hit: s (show SQL statements) At this point, you can page down through the list until you find "select". If you are familiar with the item you are looking for, for example you know the statement begins with the letter "s". You can type ahead (without the quotes) "se" then press: t Assuming "select" is highlighted in the popup list press to choose the entry. Now type: * fra (show all syntax items) choose "from" from the popup list. When writing stored procedures using the "type" list is useful. It contains a list of all the database supported types. This may or may not be true depending on the syntax file you are using. The SQL Anywhere syntax file (sqlanywhere.vim) has support for this: > BEGIN DECLARE customer_id T <-- Choose a type from the list Dynamic features ---------------- To take advantage of the dynamic features you must first install the dbext.vim plugin (http://vim.sourceforge.net/script.php?script_id=356). It also comes with a tutorial. From the SQL completion plugin's perspective, the main feature dbext provides is a connection to a database. dbext connection profiles are the most efficient mechanism to define connection information. Once connections have been setup, the SQL completion plugin uses the features of dbext in the background to populate the popups. What follows assumes dbext.vim has been correctly configured, a simple test is to run the command, :DBListTable. If a list of tables is shown, you know dbext.vim is working as expected. If not, please consult the dbext.txt documentation. Assuming you have followed the dbext-tutorial you can press t to display a list of tables. There is a delay while dbext is creating the table list. After the list is displayed press . This will remove both the popup window and the table name already chosen when the list became active. > 4.3.1 Table Completion: *sql-completion-tables* Press t to display a list of tables from within the database you have connected via the dbext plugin. NOTE: All of the SQL completion popups support typing a prefix before pressing the key map. This will limit the contents of the popup window to just items beginning with those characters. > 4.3.2 Column Completion: *sql-completion-columns* The SQL completion plugin can also display a list of columns for particular tables. The column completion is trigger via c. NOTE: The following example uses to trigger a column list while the popup window is active. Example of using column completion: - Press t again to display the list of tables. - When the list is displayed in the completion window, press , this will replace the list of tables, with a list of columns for the table highlighted (after the same short delay). - If you press , this will again replace the column list with the list of tables. This allows you to drill into tables and column lists very quickly. - Press again while the same table is highlighted. You will notice there is no delay since the column list has been cached. If you change the schema of a cached table you can press R, which clears the SQL completion cache. - NOTE: and have been designed to work while the completion window is active. If the completion popup window is not active, a normal or will be executed. Let's look at how we can build a SQL statement dynamically. A select statement requires a list of columns. There are two ways to build a column list using the SQL completion plugin. > One column at a time: < 1. After typing SELECT press t to display a list of tables. 2. Choose a table from the list. 3. Press to display a list of columns. 4. Choose the column from the list and press enter. 5. Enter a "," and press c. Generating a column list generally requires having the cursor on a table name. The plugin uses this name to determine what table to retrieve the column list. In this step, since we are pressing c without the cursor on a table name the column list displayed will be for the previous table. Choose a different column and move on. 6. Repeat step 5 as often as necessary. > All columns for a table: < 1. After typing SELECT press t to display a list of tables. 2. Highlight the table you need the column list for. 3. Press to choose the table from the list. 4. Press l to request a comma separated list of all columns for this table. 5. Based on the table name chosen in step 3, the plugin attempts to decide on a reasonable table alias. You are then prompted to either accept of change the alias. Press OK. 6. The table name is replaced with the column list of the table is replaced with the comma separate list of columns with the alias prepended to each of the columns. 7. Step 3 and 4 can be replaced by pressing L, which has a embedded in the map to choose the currently highlighted table in the list. There is a special provision when writing select statements. Consider the following statement: > select * from customer c, contact cn, department as dp, employee e, site_options so where c. In INSERT mode after typing the final "c." which is an alias for the "customer" table, you can press either c or . This will popup a list of columns for the customer table. It does this by looking back to the beginning of the select statement and finding a list of the tables specified in the FROM clause. In this case it notes that in the string "customer c", "c" is an alias for the customer table. The optional "AS" keyword is also supported, "customer AS c". > 4.3.3 Procedure Completion: *sql-completion-procedures* Similar to the table list, p, will display a list of stored procedures stored within the database. > 4.3.4 View Completion: *sql-completion-views* Similar to the table list, v, will display a list of views in the database. 4.4 Completion Customization *sql-completion-customization* ---------------------------- The SQL completion plugin can be customized through various options set in your |vimrc|: > omni_sql_no_default_maps < - Default: This variable is not defined - If this variable is defined, no maps are created for OMNI completion. See |sql-completion-maps| for further discussion. > omni_sql_use_tbl_alias < - Default: a - This setting is only used when generating a comma separated column list. By default the map is l. When generating a column list, an alias can be prepended to the beginning of each column, for example: e.emp_id, e.emp_name. This option has three settings: > n - do not use an alias d - use the default (calculated) alias a - ask to confirm the alias name < An alias is determined following a few rules: 1. If the table name has an '_', then use it as a separator: > MY_TABLE_NAME --> MTN my_table_name --> mtn My_table_NAME --> MtN < 2. If the table name does NOT contain an '_', but DOES use mixed case then the case is used as a separator: > MyTableName --> MTN < 3. If the table name does NOT contain an '_', and does NOT use mixed case then the first letter of the table is used: > mytablename --> m MYTABLENAME --> M omni_sql_ignorecase < - Default: Current setting for 'ignorecase' - Valid settings are 0 or 1. - When entering a few letters before initiating completion, the list will be filtered to display only the entries which begin with the list of characters. When this option is set to 0, the list will be filtered using case sensitivity. > omni_sql_include_owner < - Default: 0, unless dbext.vim 3.00 has been installed - Valid settings are 0 or 1. - When completing tables, procedure or views and using dbext.vim 3.00 or higher the list of objects will also include the owner name. When completing these objects and omni_sql_include_owner is enabled the owner name will be replaced. > omni_sql_precache_syntax_groups < - Default: ['syntax','sqlKeyword','sqlFunction','sqlOption','sqlType','sqlStatement'] - sqlcomplete can be used in conjunction with other completion plugins. This is outlined at |sql-completion-filetypes|. When the filetype is changed temporarily to SQL, the sqlcompletion plugin will cache the syntax groups listed in the List specified in this option. > 4.5 SQL Maps *sql-completion-maps* ------------ The default SQL maps have been described in other sections of this document in greater detail. Here is a list of the maps with a brief description of each. Static Maps ----------- These are maps which use populate the completion list using Vim's syntax highlighting rules. > a < - Displays all SQL syntax items. > k < - Displays all SQL syntax items defined as 'sqlKeyword'. > f < - Displays all SQL syntax items defined as 'sqlFunction. > o < - Displays all SQL syntax items defined as 'sqlOption'. > T < - Displays all SQL syntax items defined as 'sqlType'. > s < - Displays all SQL syntax items defined as 'sqlStatement'. > Dynamic Maps ------------ These are maps which use populate the completion list using the dbext.vim plugin. > t < - Displays a list of tables. > p < - Displays a list of procedures. > v < - Displays a list of views. > c < - Displays a list of columns for a specific table. > l < - Displays a comma separated list of columns for a specific table. > L < - Displays a comma separated list of columns for a specific table. This should only be used when the completion window is active. > < - Displays a list of columns for the table currently highlighted in the completion window. is not recognized on most Unix systems, so this maps is only created on the Windows platform. If you would like the same feature on Unix, choose a different key and make the same map in your vimrc. > < - Displays the list of tables. is not recognized on most Unix systems, so this maps is only created on the Windows platform. If you would like the same feature on Unix, choose a different key and make the same map in your vimrc. > R < - This maps removes all cached items and forces the SQL completion to regenerate the list of items. Customizing Maps ---------------- You can create as many additional key maps as you like. Generally, the maps will be specifying different syntax highlight groups. If you do not wish the default maps created or the key choices do not work on your platform (often a case on *nix) you define the following variable in your |vimrc|: > let g:omni_sql_no_default_maps = 1 Do no edit ftplugin/sql.vim directly! If you change this file your changes will be over written on future updates. Vim has a special directory structure which allows you to make customizations without changing the files that are included with the Vim distribution. If you wish to customize the maps create an after/ftplugin/sql.vim (see |after-directory|) and place the same maps from the ftplugin/sql.vim in it using your own key strokes. was chosen since it will work on both Windows and *nix platforms. On the windows platform you can also use or ALT keys. 4.6 Using with other filetypes *sql-completion-filetypes* ------------------------------ Many times SQL can be used with different filetypes. For example Perl, Java, PHP, Javascript can all interact with a database. Often you need both the SQL completion and the completion capabilities for the current language you are editing. This can be enabled easily with the following steps (assuming a Perl file): > 1. :e test.pl 2. :set filetype=sql 3. :set ft=perl Step 1 ------ Begins by editing a Perl file. Vim automatically sets the filetype to "perl". By default, Vim runs the appropriate filetype file ftplugin/perl.vim. If you are using the syntax completion plugin by following the directions at |ft-syntax-omni| then the |'omnifunc'| option has been set to "syntax#Complete". Pressing will display the omni popup containing the syntax items for Perl. Step 2 ------ Manually setting the filetype to 'sql' will also fire the appropriate filetype files ftplugin/sql.vim. This file will define a number of buffer specific maps for SQL completion, see |sql-completion-maps|. Now these maps have been created and the SQL completion plugin has been initialized. All SQL syntax items have been cached in preparation. The SQL filetype script detects we are attempting to use two different completion plugins. Since the SQL maps begin with , the maps will toggle the |'omnifunc'| when in use. So you can use to continue using the completion for Perl (using the syntax completion plugin) and to use the SQL completion features. Step 3 ------ Setting the filetype back to Perl sets all the usual "perl" related items back as they were. vim:tw=78:ts=8:ft=help:norl: