为什么在没有隐藏功能的情况下编译Apple Vim?

时间:2018-09-22 01:33:28

标签: macos vim cross-compiling vim-plugin

我注意到这个事实试图使用Yggdroot/indentLine plugin,这需要隐藏功能。

$ /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通常支持+隐藏功能。

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

谢谢。

1 个答案:

答案 0 :(得分:3)

很难说出他们为什么要这么做。只有一个苹果 员工将能够帮助我们解释这一点。但是我不 认为这是对conceal的明确排除。

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

--with-features=TYPE.  tiny, small, normal, big or huge (default: huge)
来自src/auto/configure L1532

conceal功能仅通过 big huge 启用,并且 取决于+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或类似名称上创建别名来执行。