vi/vim显示中文字符并且去掉^M的方法

本文介绍了解决vim编辑器中中文乱码的方法,通过设置.vimrc文件来实现对不同编码的支持,并提供了去除文件中^M字符的多种方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vim上经常会碰到中文显示不正常的现象,也就是传说中的乱码。搜索了一下,在 
http://www.chinalinuxpub.com/bbs/showthread.php?t=45475
找到了一个解决办法。但是gbk编码的正常了,utf8的又不对了。于是稍微改了一点。
用户目录下创建.vimrc文件
加入
set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set fileformats=unix
set encoding=prc
fileencodings中utf-8要在前面。

这样就能正常显示中文了。配合pietty,可以完全正常显示、编辑中文了。
 

几种去除^M的方法

1、 cat filename1 | tr -d "\r" > newfile

2、 sed -e "s/^V^M//" filename > outputfilename

3、vi: 用vi打开文件

1. 按ESC键

2. 输入 :%s/^M//g

确定 ^M是使用 "CTRL-V CTRL-M" 而不是字面上的 ^M。这个正则式将替换所有回车符前的 ^M为空($是为了保证^M出现在行尾)
4、一些linux版本有 dos2unix 程序,可以用来祛除^M

5、用vim

输入 :set notextmode

 

可惜,经过上面的处理以后,^M是不存在了,但是换行不成功。所有的东西都在一行上面,看着很费劲。这说明处理的时候文件缺少"\n",可以在替换的时候添加上即可:

cat filename | tr "\r" "\n" > newfile

<think>好的,用户想了解Linux文件中^M符号的含义以及删除方法。首先,我需要解释^M的来源。这应该是因为Windows和Linux使用不同的换行符导致的,Windows是\r\n,而Linux是\n,所以当文件从Windows复制到Linux时,多余的\r会被显示^M。接下来,用户可能需要具体的删除方法。常见的办法包括使用dos2unix工具,或者用sed、tr命令处理。比如tr -d '\r'< file> newfile,或者sed-i's/\r//g' file。这些方法都能去掉\r字符。还要考虑用户是否处理多个文件,可能需要脚本批量处理。引用中提到的那个脚本可以用tr命令循环处理,生成临时文件再替换原文件。这样用户处理大量文件时更方便。另外,用户可能不太熟悉命令行,需要给出具体的步骤示例,比如如何安装dos2unix,或者如何运行脚本。需要确保命令的正确性,避免误操作。比如提醒用户备份文件,防止数据丢失。 还要注意不同系统下换行符的差异,解释清楚为什么会出现^M,这样用户能更好地理解问题根源。可能用户是开发者或者系统管理员,经常需要处理跨平台文件,所以给出实际应用中的建议也很重要,比如在版本控制中统一换行符设置。 最后,检查是否有遗漏的方法,比如vi编辑器中替换的方法,或者使用perl等其他工具。确保覆盖用户可能遇到的不同情况,提供多种解决方案供选择。</think>### Linux文件中^M符号的含义及删除方法 #### 一、^M符号的含义 1. **符号来源** Windows和Linux系统的换行符不同: - **Windows**:使用回车符(`\r`)和换行符(`\n`),即`\r\n`[^1][^3]。 - **Linux**:仅使用换行符(`\n`)[^1][^2]。 当文件从Windows复制到Linux时,多余的`\r`会被显示为`^M`(在终端中显示为`Ctrl+M`的符号)。 2. **影响** - 可能导致脚本执行错误(例如`bash`解释器报错`$'\r': command not found`)[^1]。 - 影响文本文件的格式(如日志文件、配置文件)。 --- #### 二、删除^M符号的方法 ##### 方法1:使用`tr`命令 ```bash tr -d '\r' < 原文件 > 新文件 # 示例:处理文件test.txt并覆盖原文件 tr -d '\r' < test.txt > tmp.txt && mv tmp.txt test.txt ``` **原理**:直接删除`\r`字符[^2][^4]。 --- ##### 方法2:使用`sed`命令 ```bash sed -i 's/\r//g' 文件名 # 示例:处理当前目录下所有.txt文件 sed -i 's/\r//g' *.txt ``` **参数说明**: - `-i`:直接修改文件内容(无需生成临时文件)[^4]。 --- ##### 方法3:使用`dos2unix`工具 1. **安装工具**(如未预装): ```bash # Debian/Ubuntu sudo apt-get install dos2unix # CentOS/RHEL sudo yum install dos2unix ``` 2. **转换文件**: ```bash dos2unix 文件名 # 批量处理所有文件 dos2unix * ``` --- ##### 方法4:在`vi`编辑器中处理 1. 打开文件: ```bash vi test.txt ``` 2. 输入替换命令: ```vim :%s/^M//g ``` **注意**:`^M`需通过`Ctrl+V`+`Ctrl+M`输入(显示为`^M`)。 --- #### 三、批量处理脚本(参考引用[^4]) ```bash #!/bin/bash for file in "$@" do if [ -f "$file" ]; then tr -d '\r' < "$file" > "${file}.tmp" && mv "${file}.tmp" "$file" echo "已处理: $file" fi done ``` **使用方法**: 1. 保存为`remove_cr.sh`,添加执行权限: ```bash chmod +x remove_cr.sh ``` 2. 执行脚本: ```bash ./remove_cr.sh *.txt # 处理所有txt文件 ``` --- #### 四、验证结果 ```bash cat -A 文件名 # 查看文件中的特殊符号(^M应已消失) ``` --- #### 五、最佳实践建议 1. **版本控制配置**: 在Git中设置自动转换换行符: ```bash git config --global core.autocrlf input ``` 2. **跨平台协作**: 统一团队使用`LF`(Linux风格换行符)[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值