2014-07-24 55 views
11

我想在SQL中禁用(auto-/omni- /无论 - )完成。这对我来说是个问题,因为我使用<C-c>进行转义,当文件以.sql结尾时,它似乎启动了一些令人沮丧的2秒暂停的搜索。特别是,在暂停期间输入k会导致插入不需要的sql关键字的冲突。禁用omnicomplete或ftplugin或vim的东西

的.vimrc有

filetype plugin off 
    set omnifunc= 

:filetype返回filetype detection:ON plugin:OFF indent:ON

但在插入模式<C-c>k仍然打印

-- Omni completion (^O^N^P) 
    match 1 of 80` while autocompleting 

:verbose imap <C-c>k返回

i <C-C>k  *@<C-\><C-O>:call sqlcomplete#Map("sqlKeyword\\w*")<CR><C-X><C-O> 
     Last set from ~/projects.vim 

verbose set omnifunc可以被覆盖,甚至当我:set omnifunc=(当我把它设置为无)直接:

omnifunc=sqlcomplete#Complete 
     Last set from /opt/local/share/vim/vim74/autoload/sqlcomplete.vim 

更多的尽职调查:

  1. :帮助omnifunc
  2. :帮助文件类型插件
  3. 这个,也许是一样的,但没有回答:How do I turn off Omni Complete in Vim?
  4. 其他SO建议,这是关于在
  5. 所有关于打开这些功能更改文件名有不同的足以解决问题 但这是愚蠢的。

回答

8

这些映射来自$VIMRUNTIME/ftplugin/sql.vim。你会发现它记录在:help ft-sql。如何自定义/关闭映射在:help sql-completion-customization(及以下段落)中进行了描述。摘要:

如果你不希望任何的映射:

let g:omni_sql_no_default_maps = 1 

要重新定义只是恼人的关键:

let g:ftplugin_sql_omni_key = '<Leader>sql' 

您也可以完全通过选择一个不存在的一个禁用键:

let g:ftplugin_sql_omni_key = '<Plug>DisableSqlOmni' 

把这些放入您的~/.vimrc

+0

很好。一个额外的说明:这实际上并没有解决我的问题,因为我的会话中的设置(我使用了很多mksession)正在覆盖.vimrc中的设置。我必须浏览会话文件,并在建议可行之前删除对omnifunc的每个引用,但它确实如此。 <新问题;我怎么能得到mksession来保存.vimrc设置?> – enfascination

+1

很高兴能帮到你!我建议':set sessionoptions- = options',它将停止在会话中存储映射和选项,所以将来不会有这些问题(并且存储的会话变得更小)。默认选项是IMO错误。 –

+0

感谢这个rtfm,我也使用退出插入模式,所以禁用这些绑定使得编辑sql文件对我来说更加愉快。 – OregonTrail