LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 155|回复: 0

vim中文编码的问题

[复制链接]
发表于 2024-1-20 23:38:43 | 显示全部楼层 |阅读模式
中文编码的问题
在 vim 里面无法显示中文,那么你需要考虑:

Linux 系统默认支持的语系数据,与 /etc/locale.conf 有关
终端界面(bash)的语系;与 LANG、LC_ALL 几个参数有关
文件原本的编码
开机终端机的软件,例如在 GNOME 下的窗口
上面最重要的是第 3 和 4 点,只要这两点编码一致,就能不乱码;

可以使用如下的方式来暂时修改 tty 的语系(前面都讲过的)

LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8


#DOS 与 Linux 的断行字符
cat 命令 中讲解过 DOS(windows 系统)建立的文件的特殊格式,发现 DOS 为 ^M$,而 linux 是 $,windows 是 CR(^M) 与 LF($) 两个符号组成的,Linux 是 LF ;对于 Linux 的影响很大

在 Linux 指令开始执行的时候,判断依据是 Enter 按键(也就是换行符,回车一下就会出现换行符),由于两个系统的换行符不一致,会导致 shell script 程序文件无法执行

可以使用 dos2unix 指令来一键转换,但是目前为止,虚拟机还没有网络,无法安装,笔者这里只记录用法

dos2unix [-kn] file [newfile]
unix2dos [-kn] file [newfile]

-k:保留该文件原本的 mtime 时间格式(不更新文件上次内容经过修订的时间)
-n:保留原本的旧文件,将转换后的内容输出到新文件,如:dos2unix -n old new

# 将 /etc/man_db_conf 重新复制到 /tmp/vitest 下,并将其修改为 dos 断行
cd /tmp/vitest
cp -a /etc/man_db_conf .
ll man_db.conf
unix2dos -k man_db.conf

# 将上述的 man_db.conf 转成 linux 换行符,并保留旧文件,新文件防御 man_db.conf.linux
dos2unix -k -n man_db.conf man_db.conf.linux
ll man_db.conf*
file man_db.conf*
man_db.conf:        ASCII text,with CRLF line terminators   # 说明了是 CRLF 换行
man_db.conf.linux: ASCII text

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表