vim 中 ^M 解决方法

有两种情况,会在打开的文件中出现 ^M 符号:

1. vim 被配置为 fileformat=unix,而打开的文件是 dos 格式。

unix 格式的换行符 ascii 码为 OA (<LF>),dos 格式的换行符 ascii 码为 OD OA (<CR><LF>),而 OD 在 vim 里就显示为 ^M。

dos, mac 和 unix 格式的简介

回想计算机的史前史,那时的打字机使用两个字符来开始新的一行。首先是回车字符 OD 使打印头移回开始位置,然后用进纸字符 OA 使打印机向前进纸一行。

在计算机诞生之初,存储设备十分昂贵。于是有人就提出没有必要用两个字符来表示一行的结束。unix 一族决定只用进纸一个字符 <LineFeed> 来表示行尾。来自苹果阵营的人则把回车 OD 作为换行的标准。而微软公司(ms-dos,windows)仍然决定沿用古老的回车换行 OD OA 传统。

这就意味着文件在不同系统间转移时,会遇到与换行相关的问题。vim 编辑器则可以识别这些不同格式的文件。你可以在 fileformats 选项里指定你希望 vim 能自动识别的格式集合。

下面这条命令就能让 vim 自动识别 unix 格式和 ms-dos 格式:
:set fileformats=unix,dos
把这条命令写在 vimrc 中,通常情况下都能自动识别。

2. 你的文本中既有 unix 的换行符,又有 dos 的换行符,那么 vim 会认为你打开的是 unix的,所以那些 dos 的换行符就会出现恼人的 ^M。不过这种情况不常见,方法如下:

1)若你的 vim 版本大于 7.1 并想用 dos 显示和保存,执行命令:
:e ++ff=dos

2)若你的 vim 版本小于等于 7.1 又想把文章按照 dos 格式显示和保存,执行命令:
:set ff=dos
:%s/\r\+$//e

3)若你的 vim 版本小于等于 7.1 又想把文章按照 unix 格式显示和保存,执行命令:
:set ff=unix
:%s/\r\+$//e

Windows 下 vim 配置详解

Windows 下 vim 的配置文件在安装目录下,名为 _vimrc,常见配置如下:

01. vim 配色
color evening

02. vim 字体
set guifont=Courier_New:h14:cANSI

03. 不要使用 vi 的键盘模式,而是 vim 自己的
set nocompatible

04. 语法高亮
set syntax=on

05. 去掉输入错误的提示声音
set noeb

06. 在处理未保存或只读文件的时候,弹出确认
set confirm

07. 自动缩进
set autoindent
set cindent

08. 设置 Tab 的宽度
set tabstop=4

09. 缩进设置
set softtabstop=4
set shiftwidth=4

10. 不要用空格代替制表符
set noexpandtab

11. 在行和段开始处使用制表符
set smarttab

12. 显示行号
set number

13. 历史记录数
set history=1000

14. 禁止生成临时文件
set nobackup

15. 禁止生成交换文件
set noswapfile

16. 搜索忽略大小写
set ignorecase

17. 高亮搜索内容
set hlsearch
set incsearch

18. 行内替换
set gdefault

19. 高亮显示匹配的括号
set showmatch

20. 匹配括号高亮的时间(单位是十分之一秒)
set matchtime=5

21. 为 C 程序提供自动缩进
set smartindent

22. 设置打开文件的默认编码
set encoding=utf-8
set fileencodings=utf-8,chinese,utf-16le,latin-1
if has(‘win32′)
set fileencoding=chinese
else
set fileencoding=utf-8
endif

23. 设置系统菜单的显示语言
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim

24. 设置终端输出语言
language messages zh_CN.utf-8

25. 设置屏幕显示的编码
set termencoding=字符编码

常见问题解决:
1. 解决 Windows 下 vim 的中文乱码,添加 22,23,24 配置
2. 禁止 vim 自动生成以 ~ 为后缀的文件备份,添加 14 配置