vim - 在 vim 中禁用 omnicomplete 或 ftplugin 或其他东西

标签 vim autocomplete

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

.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

更多尽职调查:
  • :help omnifunc
  • :help ftplugin
  • 这可能是一样的,但没有回答:How do I turn off Omni Complete in Vim?
  • 其他 SO 建议,就是打开这些功能
  • 将文件名更改为不同的名称即可解决问题
    但那是愚蠢的。
  • 最佳答案

    这些映射来自 $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 .

    关于vim - 在 vim 中禁用 omnicomplete 或 ftplugin 或其他东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24931088/

    相关文章:

    windows - 如何在 gVim (Win32) 中缩进选择

    java - 将forceValidOption设置为false后,struts jquery标签的Struts2自动完成器不采用列表之外的其他值

    javascript - Material-UI 自动完成仅存储对象的单个属性

    jquery 自动完成 json 和可点击的链接

    java - Vim 编辑器很聪明吗?

    python - 如何通过vim进行交互?

    vim - Vim的隐藏功能

    vim - 如何在 Vim 中实现类似 MATLAB 的单元格模式

    autocomplete - Elasticsearch 自动完成或按 token 自动建议

    xml - 如何使 Xcode 使用自定义 DTD 进行自动完成?