Я понимаю, что одной из главных целей Vim является переносимость и настройка. Обилие комментариев в руководстве о том, что по-разному работает по различным проблемам, меня не удивляет. Тем не менее, я не понимаю, почему почти каждая функция может быть отключена с помощью флага компиляции, с какой целью она работает? Не будет ли проще отключить функции во время выполнения, с какой-то конфигурацией?Почему vim так сильно зависит от конфигурации функций компиляции?
Насколько я понимаю (я пытался погрузиться в код vim, но не писал никаких патчей), это делает базу кода намного сложнее, и именно это разработчики Neovim пытаются удалить. Почему разработчики vim следовали этому подходу?
Короткий вариант? Вернувшись в старые времена, люди хотели делать такие вещи, как поместить Vim на [дискеты] (http://en.wikipedia.org/wiki/Floppy_disk) или запустить его на [Commodore Amiga] (http: //en.wikipedia .org/wiki/Amiga). Пространство было важно. Тем не менее, люди, которые были людьми, означали, что кто-то бесполезный раздувание всегда был чьей-то важной особенностью. Таким образом, zillion компилирует флаги. – lcd047
Итак, размер сборки? Удалили ли функции, действительно уменьшив размер двоичного файла? Кстати, если это так, похоже, это был бы отличный ответ, а не просто комментарий. –
Некоторые флаги также связаны с различными целями построения. Vim - пример программы, которая работает на многих платформах (оболочками будет другой). Он должен предоставлять замены или настройки для вещей, которые могут быть недоступны или работать по-разному на целевом объекте (адресация экрана, распределение памяти, взаимодействие между процессами и т. Д.). –