1

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

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

4

1 回答 1

1

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

  • 可移植性:要支持完全不同(和异国情调,如 DOS 和 Amiga)的操作系统,必须包含不同的(GUI)库,因此肯定需要通过以下方式进行条件编译#ifdef
  • 在许多 Linux 发行版中,一个微小的 Vim 构建用作vi; 应该有任何扩展功能
  • 它提供了极大的灵活性:开发人员/打包人员可以自由混合和匹配(尽管我猜大多数人会坚持使用默认的小/大/巨大功能包)

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

于 2015-06-10T15:54:45.900 回答