首页 > 解决方案 > 为什么苹果 vim 编译时没有隐藏功能?

问题描述

我注意到这个事实试图使用需要隐藏功能的Yggdroot/indentLine 插件

$ /usr/bin/vim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Nov 29 2017 18:37:46)
Included patches: 1-503, 505-680, 682-1283
Compiled by root@apple.com
Normal version without GUI.  Features included (+) or not (-):
...
-conceal         +libcall         -profile         +visualextra
...

Vim > 7.3 通常支持 +conceal 功能。

有人知道为什么苹果在编译时明确排除了隐藏功能吗?

提前致谢。

标签: macosvimcross-compilingvim-plugin

解决方案


很难说为什么他们会做出这样的选择。只有 Apple 员工才能帮助我们解释这一点。但是,我不认为它conceal本身就是一个明确的排除。

当你编译 Vim 时,配置脚本接受一个名为的选项,该选项 --with-features 控制一组功能的启用或禁用。

--with-features=TYPE.  tiny, small, normal, big or huge (default: huge)

src/auto/configure L1532

conceal 功能仅在 bighuge时启用,并且取决于+syntax

/*
 * +conceal     'conceal' option.  Needs syntax highlighting
 *          as this is how the concealed text is defined.
 */
#if defined(FEAT_BIG) && defined(FEAT_SYN_HL)
# define FEAT_CONCEAL
#endif

来自src/feature.h L496-502

您可以通过检查来查看每个功能集中包含的内容的方便列表:h +feature-list。因此,从其他功能来看,我会说 conceal只是因为它们正在使用功能集选项进行编译而被禁用--with-features=normal

强烈建议安装更新更完整的 Vim。替换系统程序可能不是最佳的,但这正是为什么有很多替代方法可以确保正确执行并保持 Vim 更新和完整的原因。如果你 安装了Homebrew ,一个简单的命令就可以了:

$ brew install vim

或者,如果你有 MacVim,你也可以通过在你的 shell 上创建一个别名或类似的东西来使用它的内部可执行文件。


推荐阅读