Отключить omnicomplete или ftplugin или что-то в vim

Я пытаюсь отключить (auto-/omni-/whichever-) завершение в sql. Это проблема для меня, потому что я использовал <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
  • Это, возможно, одно и то же, но ответа не было: Как отключить Omni Complete в Vim?
  • Другие советы SO, которые касаются включения этих функций в
  • Изменение имени файла для другого исполнения решит проблему но это глупо.

Ответ 1

Эти сопоставления происходят из $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.