Какая разница между omnifunc и completefunc, кроме сопоставления ключей вызова?

Есть ли разница в функциональности между этими двумя типами полных функций в vimscript?

Ответы

Ответ 1

Технически, нет никакой разницы в реализации как пользовательских завершение (см. :help compl-function, :help 'completefunc') и Omni завершение (см. :help compl-omni, :help 'omnifunc'). Оба они работают вызов функции специальной семантики, которая определяет начало выражение, которое должно быть заполнено в текущей позиции, и (см. :help complete-functions).

Если различие между этими двумя типами завершения проявляется, является целью завершения. Пользовательское завершение должно быть настроено по сам пользователь в соответствии с условиями, специфичными для конкретного завершения идея. Предполагается, что завершение Omni будет специфичным для файла. Следовательно, отдельные Функции завершения Omni для разных типов файлов загружаются автоматически Vim из autoload/{ft}complete.vim файлов, где {ft} означает определенный тип файла. См. Те файлы завершения Omni для C или Python filetypes в качестве ссылки.