启动时的错误信息 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
设置并更改任何 LANG
、LC_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 ~/.zshrc
或source ~/.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
我用 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
设置并更改任何 LANG
、LC_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 ~/.zshrc
或source ~/.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