文档章节

Linux学习-其他vim使用注意事项

u
 uetucci
发布于 2017/08/29 15:49
字数 805
阅读 10
收藏 0

中文编码的问题

如果你的文件是使用 big5 编码制作的,但 在 vim 的终端接口中你使用的是万国码(utf8), 由于编码的不同,你的中文文件内容当然 就是一堆乱码了!怎么办?这时你得要考虑许多东西啦!有这些:

  1. 你的Linux系统默认支持的语系数据:这与/etc/locale.conf有关;
  2. 你的终端接口(bash)的语系:这与LANG,LC_ALL这几个变量有关;
  3. 你的文件原本的编码;
  4. 打开终端机的软件,例如在GNOME下面的窗口接口。

通常是这样来修正语系编码的行为:

[dmtsai@study ~]$ LANG=zh_TW.big5
[dmtsai@study ~]$ export LC_ALL=zh_TW.big5

DOS 与 Linux 的断行字符

曾经提到过 DOS 与 Linux 断行字符的不同。 而我们 也可以利用 cat -A 来观察以 DOS (Windows 系统) 创建的文件的特殊格式, 也可以发现在 DOS 使用的断行字符为 ^M$ ,我们称为 CR 与 LF 两个符号。 而在 Linux 下面,则是仅有 LF ($) 这个断行符号。

[dmtsai@study ~]$ dos2unix [-kn] file [newfile]
[dmtsai@study ~]$ unix2dos [-kn] file [newfile]
选项与参数:
 -k :保留该文件原本的 mtime 时间格式 (不更新文件上次内容经过修订的时间)
 -n :保留原本的旧文件,将转换后的内容输出到新文件,如: dos2unix -n old new

范例一:将 /etc/man_db.conf 重新复制到 /tmp/vitest/ 下面,并将其修改成为 dos 断行
[dmtsai@study ~]# cd /tmp/vitest
[dmtsai@study vitest]$ cp -a /etc/man_db.conf .
[dmtsai@study vitest]$ ll man_db.conf
-rw-r--r--. 1 root root 5171 Jun 10  2014 man_db.conf
[dmtsai@study vitest]$ unix2dos -k man_db.conf
unix2dos: converting file man_db.conf to DOS format ...
# 屏幕会显示上述的讯息,说明断行转为 DOS 格式了!
[dmtsai@study vitest]$ ll man_db.conf
-rw-r--r--. 1 dmtsai dmtsai 5302 Jun 10  2014 man_db.conf
# 断行字符多了 ^M ,所以容量增加了!

范例二:将上述的 man_db.conf 转成 Linux 断行字符,并保留旧文件,新文件放于 man_db.conf.linux
[dmtsai@study vitest]$ dos2unix -k -n man_db.conf man_db.conf.linux
dos2unix: converting file man_db.conf to file man_db.conf.linux in Unix format ...
[dmtsai@study vitest]$ ll man_db.conf*
-rw-r--r--. 1 dmtsai dmtsai 5302 Jun 10  2014 man_db.conf
-rw-r--r--. 1 dmtsai dmtsai 5171 Jun 10  2014 man_db.conf.linux
[dmtsai@study vitest]$ file man_db.conf*
man_db.conf: ASCII text, with CRLF line terminators # 很清楚说明是 CRLF 断行!
man_db.conf.linux: ASCII text

语系编码转换

[dmtsai@study ~]$ iconv --list
[dmtsai@study ~]$ iconv -f 原本编码 -t 新编码 filename [-o newfile]
选项与参数:
 --list :列出 iconv 支持的语系数据
 -f :from ,亦即来源之意,后接原本的编码格式;
 -t :to ,亦即后来的新编码要是什么格式;
 -o file:如果要保留原本的文件,那么使用 -o 新文件名,可以创建新编码文件。

范例一 : 将/tmp/vitest/vi.big5 转成 utf8 编码吧!
 [dmtsai@study ~]$ cd /tmp/vitest
 [dmtsai@study vitest]$ iconv -f big5 -t utf8 vi.big5 -o vi.utf8
 [dmtsai@study vitest]$ file vi*
 vi.big5: ISO-8859 text, with CRLF line terminators
 vi.utf8: UTF-8 Unicode text, with CRLF line terminators
# 是吧!有明显的不同吧

不过如果是要将正体中文的 utf8 转成简体中文的 utf8 编码时,那就得费些功夫了! 举例来 说,如果要将刚刚那个 vi.utf8 转成简体的 utf8 时,可以这样做:

[dmtsai@study vitest]$ iconv -f utf8 -t big5 vi.utf8 | \
> iconv -f big5 -t gb2312 | iconv -f gb2312 -t utf8 -o vi.gb.utf8

© 著作权归作者所有

共有 人打赏支持
u
粉丝 0
博文 65
码字总数 103136
作品 0
深圳
程序员
私信 提问
关于学习linux的一些心得体会

昨天一个学弟问我怎么学好linux,就思考了一下,做下总结,欢迎大家补充!!!(他还让我给他补linux课,表示很蛋疼。。。。) 学习linux之前必须要做好心理准备: 第一,要明白学好linux不是...

索隆
2012/09/14
0
0
如何使用 Vim 编辑器编辑多个文件

有时候,您可能需要修改多个文件,或要将一个文件的内容复制到另一个文件中。在图形用户界面中,您可以在任何图形文本编辑器(如 gedit)中打开文件,并使用 和 复制和粘贴内容。在命令行模式...

作者: Sk
05/11
0
0
如何在任何地方使用 Vim 编辑器输入文本

本文导航 -在 Linux 中安装 Vim-anywhere13% -在任何地方使用 Vim 编辑器输入文本29% 各位 Vim 使用者大家好!今天,我这里有个好消息告诉大家。我会向大家介绍 Vim-anywhere,这是一个简单的...

13%
05/14
0
0
2018-3-15 Linux学习笔记

12.13 Nginx防盗链 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 配置如下: location ~ ^.+.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ { expir......

XiaoluHuang
06/28
0
0
Linux开发环境搭建之Java开发环境JDK安装配置

这几天国产的Linux系统deepin15.5正式版发布了,基本上处于稳定了,受不了win10的各种卡顿和系 统封闭不能修改的诟病,果断下载了deepin系统格盘安装,在deepin上进行开发学习娱乐。本文将在...

MaxBill
2017/12/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JavaScript实现在线Markdown编辑器、转换HTML工具-toolfk程序员工具网

本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果。T...

toolfk
4分钟前
0
0
Source Tree 在git 密码更新后,无法拉取代码的解决办法

背景: git 密码总是需要修改。在修改代码后,拉去代码, source tree 总提示access denied. 解决方法:重新修改git 仓库对应的密码。 for mac:应用程序 -》 钥匙串 -》 搜索 source tre...

Carlyle_Lee
8分钟前
0
0
OSChina 周日乱弹 —— 懒床是对冬天最起码的尊重

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享daniwellP/桃音モモ的单曲《Nyan Cat》 《Nyan Cat》- daniwellP/桃音モモ 手机党少年们想听歌,请使劲儿戳(这里) @巴拉迪...

小小编辑
今天
60
2
码云项目100,水一发

简单回顾一下: 早期构想最多的,是希望能将PHP一些类和编码分区做得更细,所以很多尝试。但不得不说,PHP的功能过于单一,是的,也许写C/C++扩展,可以解决问题,那我为什么不用C#或者Golan...

曾建凯
今天
4
0
Spring应用学习——AOP

1. AOP 1. AOP:即面向切面编程,采用横向抽取机制,取代了传统的继承体系的重复代码问题,如下图所示,性能监控、日志记录等代码围绕业务逻辑代码,而这部分代码是一个高度重复的代码,也就...

江左煤郎
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部