Технически, нет никакой разницы в реализации как пользовательского завершения (см. :help compl-function
, :help 'completefunc'
), так и Омни завершения (см. :help compl-omni
, :help 'omnifunc'
).Оба они работают, вызывая функцию специальной семантики, которая определяет начало выражения, которое должно быть завершено в текущей позиции, и предоставляет соответствующие предложения о завершении (см. :help complete-functions
).
Где разница между этими двумяТипы завершения проявляет себя, является целью завершения.Пользовательское завершение должно быть настроено самим пользователем в соответствии с условиями, специфичными для конкретной идеи завершения.Предполагается, что завершение Omni зависит от типа файла.Следовательно, отдельные функции завершения Omni для разных типов файлов автоматически загружаются Vim из файлов autoload/{ft}complete.vim
, где {ft}
обозначает конкретный тип файла.См. Эти файлы завершения Omni для типов файлов C или Python в качестве ссылки.