Ubuntu/vim中文输入问题全解析

谜题

今天在使用的docker的ubuntu 16.04镜像的时候,发现了一个其对中文的支持是个远古大坑(大雾
虽然一般服务商的镜像这种事情都已经早配好了,但是没想到在docker里还遇到了这种问题【叹
那么我们就来看看一起可能导致中文输入问题的几个原因吧~
o( ̄▽ ̄)ブ

解谜

bash设置

嗯,没错,在怀疑Ubuntu之前,我们应该先排除自己的问题。
我这边使用的xshell,一定要注意下会话连接(也就是点击打开后出现的窗口)的属性
在左边栏中,点击终端选项。确认一下转换栏里的编码是不是Unicode(UTF-8)

Ubuntu系统字符集

执行cat /etc/environment看看有没有

LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh:en_US:en" 

字样。如果没有,问题大概就在这里了。
如果是普通的Ubuntu VPS的话,可以试试这几条命令:

apt install  language-pack-zh-han*
locale-gen zh_CN.UTF-8
DEBIAN_FRONTEND=noninteractive dpkg-reconfigure locales
locale-gen zh_CN.UTF-8

这几条命令主要是下载了新的字符集并且更改了语言。之后要更改环境变量:

export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN:zh
export LC_ALL=zh_CN.UTF-8

然后试试能不能在命令行输入中文了吧(ง •_•)ง
当然啦…每次重启都要修改一次环境变量,不用我说你们都觉得麻烦的吧…
可以编辑/etc/environment这个文件,把上面几条去掉export后,把=后面的用引号包起来。最后都写到末尾,就不用每次都那么麻烦了嗯。具体是这样

LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh"
LC_ALL="zh_CN.UTF-8"

如果是docker的话,可以试试这样写DockerFile:

FROM ubuntu:trusty

# Ensure UTF-8 locale
#COPY locale /etc/default/locale
RUN locale-gen zh_CN.UTF-8 &&\
  DEBIAN_FRONTEND=noninteractive dpkg-reconfigure locales
RUN locale-gen zh_CN.UTF-8
ENV LANG zh_CN.UTF-8
ENV LANGUAGE zh_CN:zh
ENV LC_ALL zh_CN.UTF-8

或者在运行时指定:

docker run -i -t ubuntu env LANG=C.UTF-8 /bin/bash

或者执行时

docker exec -it cranky_wescoff  env LANG=C.UTF-8 bash

顺带,如果要设置时区的话,可以试试

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/TZ /etc/localtime && echo TZ > /etc/timezone

或者

# Set the timezone.
RUN sudo echo "America/New_York" > /etc/timezone
RUN sudo dpkg-reconfigure -f noninteractive tzdata

在这里感谢https://segmentfault.com/a/1190000005026503

VIM中文支持

少年,如果刚刚的折腾还是不幸没有解决你的问题的话,你还是洗洗睡吧……我会抽空为你去上柱香的……………………【正经点请!
其实上面的情况应该已经解决了在命令行中输入中文的问题。但是可能在vim中的中文输入依然是翻车的。
这种情况只要在用户的主目录(root在/root下,其它用户在/home/用户名)下创建.vimrc,在其中写入

#设置tab分隔符为4个空格
set tabstop=4

#解决中文乱码
set termencoding=utf-8
set encoding=prc

保存退出即可。立即生效。

Be the first to comment

Leave a comment

Your email address will not be published.


*


不够聪明的人工智能可进不来哦 *