启动 vim 时出现错误消息:"Failed to set locale category LC_NUMERIC to en_CH"(或en_BR、en_RU & LC_TIME、LC_COLLATE



>我用Homebrew在我的MacOS 10.14.5上新安装了vim(Vi IMproven 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并且它可以工作,但我想摆脱该错误消息。

我在该链接上看到了类似的消息

如何摆脱此错误消息?

首先,通过键入以下内容(使用 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 - 乔治·杨和普克罗帕切夫 帕维尔·克罗帕切夫(Pavel Kropachev)在那里找到了答案,感谢@bk2204另一个答案中的提示

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

如果你使用oh-my-zsh

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

如果使用鱼壳

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

如果你使用 zsh,你可以

vim ~/.zshrc

并取消注释下一行:

export LC_ALL=en_US.UTF-8

如果你使用鱼,你可以

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

不知何故,您的区域设置设置为"en_CH"。此区域设置适用于在瑞士使用的英语,但在您的系统上,这不是有效的区域设置。通常,区域设置还包含要使用的字符集,例如"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"变量。

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

vim ~/.bash_profile
export LC_ALL=C

我发现语言环境C在我访问的所有系统上都可用,包括通过 SSH 访问的系统。您可以通过locale -a列出可用的区域设置。

*并且不想走弄乱SIP的路线

最新更新