禁用omnicomplete或ftplugin或vim中的某些内容

enf*_*ion 13 vim autocomplete

我试图在sql中禁用(auto-/omni-/whichever-)完成.这对我来说是一个问题,因为我用于<C-c>转义,当文件以.sql结尾时,它似乎以令人沮丧的2秒暂停开始一些搜索.特别是,k在暂停期间键入会导致插入不需要的sql关键字的冲突.

.vimrc有

  filetype plugin off
  set omnifunc=
Run Code Online (Sandbox Code Playgroud)

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

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

  -- Omni completion (^O^N^P)
   match 1 of 80` while autocompleting
Run Code Online (Sandbox Code Playgroud)

: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
Run Code Online (Sandbox Code Playgroud)

并且verbose set omnifunc可以被覆盖,即使我:set omnifunc=(当我将其设置为空)直接:

  omnifunc=sqlcomplete#Complete
        Last set from /opt/local/share/vim/vim74/autoload/sqlcomplete.vim
Run Code Online (Sandbox Code Playgroud)

更多尽职调查:

  1. :help omnifunc
  2. :帮助ftplugin
  3. 这可能是相同的,但没有回答:如何在Vim中关闭Omni Complete?
  4. 其他SO建议,这些都是关于打开这些功能的
  5. 更改文件名以使其具有不同的足够解决问题,但这是愚蠢的.

Ing*_*kat 11

那些映射来自$VIMRUNTIME/ftplugin/sql.vim.您将在下面找到它:help ft-sql.如何自定义/关闭映射在:help sql-completion-customization(及以下段落)中描述.摘要:

如果您不想要任何这些映射:

let g:omni_sql_no_default_maps = 1
Run Code Online (Sandbox Code Playgroud)

要重新定义恼人的密钥:

let g:ftplugin_sql_omni_key = '<Leader>sql'
Run Code Online (Sandbox Code Playgroud)

您也可以通过选择一个不存在的密钥来完全禁用该密钥:

let g:ftplugin_sql_omni_key = '<Plug>DisableSqlOmni'
Run Code Online (Sandbox Code Playgroud)

将其中任何一个放入你的~/.vimrc.

  • 感谢 rtfm 的支持,我还使用 &lt;Cc&gt; 退出插入模式,因此禁用这些绑定使编辑 sql 文件对我来说更加愉快。 (2认同)