我知道 vim 的主要目标之一是可移植性和定制化。手册中关于在各种问题上的不同工作方式的大量评论并不让我感到惊讶。但是,我不明白为什么几乎每个功能都可以用编译标志禁用,它有什么用途?通过某种配置在运行时禁用功能不是更容易吗?
据我了解(我尝试深入研究 vim 代码,但没有编写任何补丁),它使代码库更加复杂,而这正是 Neovim 开发人员试图删除的内容。为什么 vim 开发人员遵循这种方法?
拥有许多标志有几种力量(其中一些已经在评论中提到):
#ifdef
vi
; 不应该有任何扩展功能因此,我的(非官方)猜测是,随着 Vim 的成长和成熟,一个有用且必要的(见上文)功能越来越多地用于越来越多的功能。最初,这很好(一致性,单一的配置机制)。当问题开始出现时,追溯切换到(更好的?)方法(如运行时配置)为时已晚;(开发和测试)工作现在会令人望而却步。