>我用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 ~/.zshrc
或source ~/.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
设置,并更改您可能已设置的任何LANG
、LC_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的路线