2014-07-24 53 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