一、vim打开window下的文件出现 ^M

首先理解,dos(windows)下建立的文件的换行是  ^M\$ (CRLF) ,而在Linux下面,仅仅是以 \$ (LF) 来做断行符号;

(^M\$ 其实没有 \ ,只不过,编辑器默认会使其变为特殊符号,所以加了反斜线)

这就造成了,vim打开dos文件时,每行末尾出现^M的符号

而这个符号影响很大,如果是一个 shell script 脚本,可造成 “程序无法执行”的状态

那么如何解决呢?

二、避免每行出现^M以及解决办法

1. 可设置所使用的编辑器的断行

  如 sublime text 中,选项:"default_line_ending": "system",

  表示,随系统的不同而变化,windows下就是CRLF,unix就是LF

2. 使用命令替换符号

  vim命令行状态下输入:

  :%s/[Ctrl-v][Enter]//g

  Ctrl-v的作用是,使得接着输入的回车键被认为是一个特殊字符,而不是vim命令的结束

3. 使用dos2unix命令

  如:dos2unix -k -n test.txt test.new.txt

-k ,表示 保留该文件原本的 mtime 时间格式(不更新文件上次内容经过修订的时间)

-n ,表示 保留原本文件,将转换后的内容输出到新文件中

注意:-k -n  不能连写成 -kn ,否则执行不成功;

       当然还有相应的 unix2dos 命令,用于两者的相互转换

       具体 可通过 dos2unix --help查看相关设置

DOS与Linux的换行字符的更多相关文章

  1. Dos与Linux的断行字符

    Symptom Dos和Linux下面的断行字符是不一样的,至于哪里不一样的呢,先举个例子看一看 Cause 我们也可以使用cat -A filename分别查看Dos和Linux下创建的文件,会发现 ...

  2. 【转】DOS与linux的断行字符

    转自:http://www.2cto.com/os/201109/104833.html 今天配置linux的dns服务器,在配置的时候,在linux下修改配置文件感觉很麻烦,于是想到把配置文件拿到w ...

  3. windows和linux中换行符的转换

    数据开发平台使用上传脚本报错:保存失败,文件编码格式不正确,请修改文件换行符为Unix终束符! 修改方式:DOS系统下,使用文本编译器另存为,然后选择换行符为unix终束符. 解释: windows ...

  4. 转 DOS(CMD)下批处理换行问题/命令行参数换行 arg ms-dos

    DOS(CMD)下批处理换行问题本人经常写一些DOS批处理文件,由于批处理中命令的参考较多且长,写在一行太不容易分辨,所以总想找个办法把一条命令分行来写,今天终于试成功两种方法.一.在CMD下,可以用 ...

  5. 全网络最正确的让 Linux 开机进入字符界面的方法及设置 FrameBuffer 分辨率的方法

    引言 这个标题有点长,是为了在标题中就把问题说清楚,以便搜索引擎能够把有需要的朋友准确地带到我这里来.目前在网络上,很多关于 Linux 方面的知识是过时的和错误的.我标题中指出的两个知识点就是其中的 ...

  6. DOS 和 Linux 常用命令的对比

    DOS 和 Linux 常用命令的对比 许多在 shell 提示下键入的 Linux命令都与你在 DOS 下键入的命令相似.事实上,某些命令完全相同. 本附录提供了 Windows的 DOS 提示下的 ...

  7. Linux驱动设计——字符设备驱动(一)

    Linux字符设别驱动结构 cdev结构体 struct cdev { struct kobject kobj; struct module *owner; const struct file_ope ...

  8. linux下的字符界面和图形界面转换

    linux下的字符界面和图形界面转换 linux下有六个虚拟终端按键ctrl+alt+F1-F6可以进入相应的虚拟终端永久的话修改/etc/inittab将id:5:initdefault:中的5改成 ...

  9. git在window与linux的换行符问题

    1:背景.我win7,后端是win10,使用了TortoiseGit工具.我使用ssh,他使用http.仓库是在linux,使用gitLab管理 2:问题.仓库是总监之前建好的.后端把文件add后pu ...

随机推荐

  1. SQL SERVER连接、合并查询

    ----创建测试表MyStudentInfoCREATE table MyStudentInfo(  Id int not null primary key,  Name varchar(16),  ...

  2. textview 多行 省略号

    TextView自带的可以通过 android:ellipsize="end" android:singleLine="true"实现单行省略,  多行显示: ...

  3. linux运维笔记——常用命令详解diff

    1.diff 你可以把diff看成是linux上的文件比对工具 例子文件内容: [root@localhost disks]# cat test1.txt a b c d [root@localhos ...

  4. (转)对Oracle导出文件错误和DMP文件结构的分析,EXP-00008: 遇到 ORACLE 错误 904 ORA-00904: "MAXSIZE": invalid identifier

    EXP-00008: 遇到 ORACLE 错误 904 ORA-00904: "MAXSIZE": invalid identifier 原因:oracle版本不一样 执行 C:/ ...

  5. phpcms v9编辑器ckeditor设置回车换行br为段落p标签

    phpcms v9和dedecms自带的编辑器都是使用的ckeditor,在默认情况下使用ckeditor编辑内容时,按下回车键后在源代码显示的是<br>而非<p>标签,对于习 ...

  6. C++11 删除链表重复数值

    #include <memory> #include <iostream> #include <chrono> #include <thread> us ...

  7. IOS 进度条与手势

    //进度条#import "ViewController.h" @interface ViewController () { UIImageView* _animaImageV; ...

  8. 学习python之练习(一)

    #1.计算1000以内3与5的倍数的总和 import math nums = 0 for i in range(0,1000): if i%3 == 0 or i%5 == 0 : if i != ...

  9. ZOJ2532_Internship

    一个单源多汇的有向图,求增大那些边的容量可以使得网络的最大流增加. 很简单,直接跑最大流,保留残余网络,然后枚举所有余量为0的边,使其容量增加一个1,看看是否出现新的增广路即可. 召唤代码君: #in ...

  10. C# 基础(6)--Winform

    WinForm 简称,Windows Form ,调用.Net框架. Return 只是退出当前方法. MessageBox.Show("输入的Email地址是非法的!"); 把整 ...