什么是Vim的外部运行时?



我正在阅读关于设置NeoVim的文章,上面说NeoVim有一个内置的Lua运行时,这使得它超级快。

这里是一个关于相同的帖子的参考:https://www.reddit.com/r/neovim/comments/q7dp56/what_exactly_is_the_point_of_lua_in_neovim/

这是否意味着Vim使用外部运行时?如果是,外部运行时究竟是什么?

如果运行时是一个阶段,其中所关注的实体被执行,并访问其执行所需的支持文件,我不确定如何有外部/内部运行时,这对像vim/NeoVim这样的文本编辑器意味着什么。

有两种方法可以扩展Vim的功能:

  • 使用vimscript,这是一种内置脚本语言,随着时间的推移,它从祖先继承的Ex命令中进化而来。这可能就是你所说的"内部运行时"。
  • 与外部脚本环境的内置接口。它允许您用Python、Ruby、Perl、Lua、MZScheme和Tcl编写插件的核心。这可能就是你所说的"外部运行时"。。

Neovim通过嵌入Lua引擎添加了第三种方式,原则上允许用户在没有vimscript的情况下进行配置和扩展。这可能就是你所说的第二个"内部运行时"。

Vim最近推出了一个新版本的vimscript,你可能也会称之为第二个"内部运行时"。

但是Vim所说的"运行时"实际上只是在启动时查找和获取的一堆目录和文件。有一个"系统运行时"的概念;(全局安装的目录和文件)和"用户运行时";(由用户在本地处理的目录和文件),但内部运行时"和外部运行时;没有任何意义。

因此,在很长一段时间内,除了vimscript之外,还可以使用许多语言扩展Vim。当您需要vimscript没有提供的东西时,您可能可以在Python或其他任何地方找到它,并通过适当的内置接口使用它。这有很多明显的优点,但也有一些缺点,比如Vim很少(从来没有?)在发布时启用每个接口,这对用户来说可能是一个很大的障碍,对作者来说也是一个很大的负担。

具体地说,嵌入Lua引擎使得Neovim用户可以用他们认为更好的语言来做他们的事情,而不必担心太多的支持:Lua是内置的,因此Lua总是可用的,因此它是扩展Neovim的新的事实上的标准。

但是这些都没有改变"运行时间"的概念。

最新更新