在Vimscript中,这两种类型的完整函数在功能上有什么区别吗?
fkaflof61#
从技术上讲,用户自定义补全(请参见:help compl-function、:help 'completefunc')和Omni补全(请参见:help compl-omni、:help 'omnifunc')的实现没有区别。它们都通过调用一个特殊语义的函数来工作,该函数将待补全的表达式的开始定位在当前位置,并提供适当的补全建议(请参见:help complete-functions)。这两种补全的不同之处在于补全的目的。用户自定义补全应该由用户自己根据特定补全想法的特定条件进行定制。Omni补全应该是特定于文件类型的。因此,不同文件类型的Omni补全函数由Vim从autoload/‹ft›complete.vim文件中自动加载。其中‹ft›代表一个特定的文件类型。请参考C或Python文件类型的Omni完成文件。
:help compl-function
:help 'completefunc'
:help compl-omni
:help 'omnifunc'
:help complete-functions
autoload/‹ft›complete.vim
‹ft›
1条答案
按热度按时间fkaflof61#
从技术上讲,用户自定义补全(请参见
:help compl-function
、:help 'completefunc'
)和Omni补全(请参见:help compl-omni
、:help 'omnifunc'
)的实现没有区别。它们都通过调用一个特殊语义的函数来工作,该函数将待补全的表达式的开始定位在当前位置,并提供适当的补全建议(请参见:help complete-functions
)。这两种补全的不同之处在于补全的目的。用户自定义补全应该由用户自己根据特定补全想法的特定条件进行定制。Omni补全应该是特定于文件类型的。因此,不同文件类型的Omni补全函数由Vim从
autoload/‹ft›complete.vim
文件中自动加载。其中‹ft›
代表一个特定的文件类型。请参考C或Python文件类型的Omni完成文件。