c - 为什么 vim 如此依赖编译时特性配置?

标签 c vim neovim

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

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

最佳答案

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

  • 可移植性:要支持完全不同的(和奇异的,如 DOS 和 Amiga)操作系统,必须包含不同的 (GUI) 库,因此肯定需要通过 #ifdef
  • 在许多 Linux 发行版上,微型 构建的 Vim 作为 vi 的默认实现;那个人不应该有任何扩展功能
  • 它允许完全的灵 active :开发人员/打包人员可以自由混合和匹配(尽管我猜大多数人会坚持使用默认的小/大/大功能包)

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

关于c - 为什么 vim 如此依赖编译时特性配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30163202/

相关文章:

C编程: Struct array construction while reading a file

c - 将数组传递给函数时使用的正确模式

vim - 在 Vim 中以垂直分割方式打开缓冲区

Vim:替换行尾

unix - VIM textwidth 没有效果

python - 为什么 Tkinter 文本小部件 "lags"会更新以增加窗口高度?

c - 在C中设置链表的交集和差集

C++ 包装 C struct *and* and functions

vim - 使用特定位置的 vimfiles 启动 vim

vim - 如何在neovim中安装vim-translate插件