启动时的错误信息 vim: "Failed to set locale category LC_NUMERIC to en_CH" (or en_BR, en_RU & LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES)

Error message when starting vim: "Failed to set locale category LC_NUMERIC to en_CH" (or en_BR, en_RU & LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES)

我用 Homebrew 在我的 MacOS 10.14.5 上新安装了 vim (Vi IMproved 8.1) 作为文本编辑器。每次我 运行 vim 都会收到此错误消息:

Warning: Failed to set locale category LC_NUMERIC to en_CH.
Warning: Failed to set locale category LC_TIME to en_CH.
Warning: Failed to set locale category LC_COLLATE to en_CH.
Warning: Failed to set locale category LC_MONETARY to en_CH.
Warning: Failed to set locale category LC_MESSAGES to en_CH.

我必须单击 ENTER 才能正常工作,但我想摆脱该错误消息。

我在 that link

上看到了类似的消息

我怎样才能摆脱这个错误信息?

不知何故,您的语言环境设置为 "en_CH"。此语言环境适用于瑞士所说的英语,但在您的系统上,这不是有效的语言环境。一般locales也会包含要使用的字符集,比如"en_US.UTF-8"里面的"UTF-8",这里也没有

可能是您的 shell 配置中的某些内容正在设置这些值,因为 macOS 通常不会设置这些特定值;相反,它设置 LANG 环境变量,并且始终使用 UTF-8 语言环境。您应该检查 .bashrc.bash_profile 设置或者 .zshenv.zshrc.zprofile 设置并更改任何 LANGLC_ALL,或您可能已设置的其他 LC_* 变量。

请注意,我不知道有任何系统具有 en_CH 语言环境;通常只有国家或地区常用语言的语言环境(通常但不总是官方语言)。例如,虽然在美国肯定有很多讲法语的人,但系统通常不提供 fr_US.UTF-8 语言环境,因为没有足够多的讲法语的人来建立本地化规范。您可能需要选择另一个足够接近您需要的英语语言环境,例如 "en_GB.UTF-8" 或 "en_US.UTF-8",或者根据您要选择的设置设置单独的 "LC" 变量。

首先,通过键入以下内容(使用 vim 作为文本编辑器)访问您的 .bash_profile 文件:

vim ~/.bash_profile

在文件 .bash_profile 中,插入以下行:

export LC_ALL=en_US.UTF-8

但是请注意,较新版本的 macOS 随附 zsh 而不是 bash 作为默认值 shell。如果您的 Mac 属于这种情况,您将不得不编辑 ~/.zshrc 而不是 ~/.bash_profile

重新启动终端或source ~/.zshrcsource ~/.bash_profile并再次启动vim:错误消息应该已经消失。

感谢@geoyws - George Yong 和 pkropachev Pavel Kropachev 找到了他们的答案 there,感谢 @bk2204 在另一个答案中的提示

如果你使用 zsh,你可以

vim ~/.zshrc

并取消注释下一行:

export LC_ALL=en_US.UTF-8

如果你用鱼,你可以

vim ~/.config/fish/config.fish
set -x LC_ALL en_US.UTF-8

简而言之:您的macOS/Unix/Linux 没有语言环境的默认配置,您应该在bash 重新启动时连接它。因此,解决方案 是更新配置文件并重新加载它(在我的示例中,语言为英语,默认编码为 UTF-8):

如果你使用 oh-my-zsh:

vim ~/.zshrc
export LC_ALL=en_US.UTF-8

如果你使用fish-shell:

vim ~/.config/fish/config.fish
set -x LC_ALL en_US.UTF-8

其他(默认):

vim ~/.bash_profile 
#OR (vim  ~/.bashrc) 
export LC_ALL=en_US.UTF-8

或者,如果您无法创建特定的语言环境(例如使用无根 MacOS*),请设置一个已安装的语言环境。

vim ~/.bash_profile
export LC_ALL=C

我发现区域 C 在我访问的所有系统上都可用,包括通过 SSH 访问的系统。您可以通过 locale -a.

列出可用的语言环境

*并且不想去搞乱 SIP