文档章节

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 python django 找份相关工作

有近2年的相关工作经验(非python) 之前主要从事windows .net开发 希望能够找一份linux vim python django 或相关的工作(学习新东西没问题!) 希望工作地, 准备开始漂泊 暂定,深圳 上海 北京 ...

寒晨
2011/04/04
907
0
关于学习linux的一些心得体会

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

索隆
2012/09/14
0
0
为什么我还在使用 Vim

Vim 是我的默认编辑器。 没有什么特别的理由,无非是我在多年前迁移到 Linux 上的时候学习了一下。 我最终喜欢它,因为我可以在四核机器(它有几千兆字节的RAM)上的编辑小文本文件,而无需等...

oschina
2017/08/07
5K
54
开发者的实用 Vim 插件(一)

作为 Vi 的升级版,Vim 毫无争议是 Linux 中最受欢迎的命令行编辑器之一。除了是一个多功能编辑器外,世界各地的软件开发者将 Vim 当做 IDE(集成开发环境Integrated Development Environmen...

局长
2016/10/28
6.7K
24
如何在任何地方使用 Vim 编辑器输入文本

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

13%
2018/05/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

IntelliJ IDEA创建第一个Spring boot项目

下载maven:http://maven.apache.org/download.cgi 开发工具:IntelliJ IDEA JDK: Java JDK1.8 ## 1.为了第一个项目初始化速度加快,我们先来配置maven: 添加配置: 选择Build,Execution,Dep...

凌宇之蓝
32分钟前
1
0
Coding and Paper Letter(四十五)

资源整理。 1 Coding: 1.Python库gempy,一种基于Python的开源三维结构地质建模软件,它允许从界面和方向数据隐式(即自动)创建复杂的地质模型。 它还支持随机建模以解决参数和模型的不确定...

胖胖雕
56分钟前
1
0
golang 声明一个指定长度的数组,用于后续添加

很多时候我们需要声明一个指定长度的数组,用于后续添加.在使用go的时候要注意,下面的第一个例子会有报错 "non-constant array bound",应该使用第二个例子. Length 是动态的值 有报错的例子 ...

漫步海边小路
59分钟前
0
0
Java NIO示例

Server端 /** * 《构建高性能的大型分布式Java应用》 * 书中的示例代码 * 版权所有 2008---2009 */package book.chapter1.tcpnio;import java.net.InetSocketAddress;i...

月下狼
今天
0
0
发布xxl-job executor dotnet core 执行器的实现

DotXxlJob [github][https://github.com/xuanye/DotXxlJob] xxl-job的dotnet core 执行器实现,支持XXL-JOB 2.0+ 1 XXL-JOB概述 [XXL-JOB][1]是一个轻量级分布式任务调度平台,其核心设计目标...

假正经哥哥
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部