为什么vim如此依赖编译时功能配置?

时间:2015-05-11 08:47:49

标签: c vim neovim

据我所知,vim的主要目标之一是可移植性和自定义。手册中关于各种问题的不同工作的评论丰富并不让我感到惊讶。但是,我不明白为什么几乎每个功能都可以通过编译标志禁用,它的用途是什么?通过某种配置,能否在运行时禁用功能会更容易吗?

据我了解(我尝试深入研究vim代码,但没有编写任何补丁),这使代码库变得更加复杂,这正是Neovim开发人员试图删除的内容。为什么vim开发人员会采用这种方法?

1 个答案:

答案 0 :(得分:1)

有几种力量可以拥有许多标志(其中一些已在评论中提及):

  • 可移植性:要完全不同(和异国情调,如DOS和Amiga)操作系统要支持,必须包含不同的(GUI)库,因此通过#ifdef
  • 在许多Linux发行版中,Vim的 tiny 版本作为vi的默认实现;那个的人应该具有任何扩展功能
  • 它允许完全的灵活性:开发人员/打包者可以自由混合搭配(虽然我猜大多数人会坚持使用默认的小/大/大功能包)。

所以,我(非官方)的猜测是随着Vim的成长和成熟,一个有用且必要的(见上文)功能越来越多地用于越来越多的功能。最初,这很好(一致性,配置的单一机制)。当问题开始出现时,追溯切换到(更好的?)方法(如运行时配置)为时已晚; (开发和测试)努力现在将是令人望而却步的。