Vim 编辑器底端 [noeol], [dos] 的含义

2012年11月28日 23:13:04 strongwangjiawei 阅读数:15484

https://blog.csdn.net/strongwangjiawei/article/details/8236703

说明一下 dos2unix 是一个base包 在centos 下面需要 执行安装. 而且安装完一个就可以 一个包里面包含两个命令

所知甚少  需要不断的学习. 

Vim 编辑器底端 [noeol], [dos] 的含义

有时使用 Vim 打开一个文件会在窗口底部发现 [noeol], [dos] 提示信息:

1
"hello-dos.txt" [noeol][dos] 2L, 10C                          1,1           All

这两个符号有何含义?

直观上理解,'noeol' 就是 'no end-of-line', 即“没有行末结束符”, Linux 下的文本编辑器(如 Vim)会在每一行 (包括最后一行)末尾添加一个换行符。比如我们在 Debian 下新建一个名为 'hello-unix.txt' 的文本文件,内容如下:

1
2
Hello
Unix

那么,使用cat -A hello-unix.txt命令可以看到这些换行符:

1
2
3
4
ts@TS:~/www/documentcat -A hello-unix.txt
Hello$
Unix$
ts@TS:~/www/document$

从中可以清楚地看到每行末尾的 '$' 字符,这就是 Linux 下的“行末结束符”。

下面我们再在 Windows 下创建一个名为 'hello-dos.txt' 记事本文件,内容如下:

1
2
Hello
DOS

在 Debian 下查看此文件的换行符信息:

1
2
3
ts@TS:~/www/documentcat -A hello-dos.txt
Hello^M$
DOSts@TS:~/www/document$

同样是两行,每行一个单词,Windows 和 Linux 下的换行符有两个明显不同:

  1. Windows 下的换行符比 Linux 下的多了个 ^M;

  2. 最后一行行末没有换行符;

这两个不同之处也正是 [dos], [noeol] 两个 Flag 信息出现的原因。 Windows 下文本文件每行的换行符为“回车+换行“(CRLF,^M$), 而 Linux 下则仅为 “换行” (LF, $). Vim 发现文本中含有 ^m$ 换行字符判定为 Windows 下创建的 文件,用 [dos] Flag 提示;Vim 没有在最后一行发现换行符,判定此文件不是在 Linux 下创建/编辑,用 [noeol] Flag 提示用户。

如何消除 [noeol] Flag 信息?

只需在 Debian 下将该文件重新保存即可,还是上面的 hello-dos.txt 文件,打开它, 不做任何修改直接 :wq保存退出,再查看换行符:

1
2
3
4
ts@TS:~/www/documentcat -A hello-dos.txt
Hello^M$
DOS^M$
ts@TS:~/www/document$

换行符已经追加上去,这里要注意的是追加的是 Windows 下的换行符(回车+换行) ^M$, 而不是 Linux 下的换行符(换行)$, 因为 Vim 已经发现此文件 是在 Windows 下创建的([dos] Flag),尽管是在 Linux 下编辑,Vim 也会按照文件创建 时所在的操作系统下的换行规则添加换行符。

如何消除 [dos] Flag 信息?

有两个简单的方法:

  1. Linux 下提供有两个命令用来进行 Windows 和 Unix 文件的转化:dos2unix 和 unix2dos;

  2. 在 Debian 下使用 touch template.txt 创建一个模板,在 Windows 下创建的任 何文本文件都以此模板为基础;

参考资料

  • http://unix.stackexchange.com/questions/31807/what-does-the-noeol-indicator-at-the-bottom-of-a-vim-edit-session-mean

  • http://linux.vbird.org/linux_basic/0310vi.php#tips_dos

[转帖]Vim 编辑器底端 [noeol], [dos] 的含义的更多相关文章

  1. VIM编辑命令的技巧

    vim 选择文本,删除,复制,粘贴   文本的选择,对于编辑器来说,是很基本的东西,也经常被用到,总结如下: v    从光标当前位置开始,光标所经过的地方会被选中,再按一下v结束. V    从光标 ...

  2. Ubuntu 14.04 Vim编辑文件的一般操作

    vim编辑文件的一般操作 1. vim #在命令行中输入vim,进入vim编辑器 2. i #按一下i键,下端显示 --INSERT-- #插入命令,在vim中可能任意字符都有作用 3. Esc #退 ...

  3. vim编辑下Python2.0自动补全

    Python自动补全有vim编辑下和python交互模式下,下面分别介绍如何在这2种情况下实现Tab键自动补全. 一.vim python自动补全插件:pydiction 可以实现下面python代码 ...

  4. vim 编辑中执行正则表达式

    1.进入vim 编辑模式 2.输入:set magic 3.输入/,然后再次输入正则表达式

  5. Linux 下 vim 编辑文件,解决中文乱码,设置Tab键空格数

    vim编辑文件的时候,输入中文就出现乱码 解决办法: 以哪个用户登录的就在哪个用户目录下创建文件 vimrc vim .vimrc       (.创建的是隐藏文件) 文件内容: set tabsto ...

  6. vim编辑Makefile如何使用Tab

    因为用vim编辑代码设置了Tab键为4个空格,但有时候我们需要编写Makefile,必须使用Tab,同时也不想设置set noexpandtab. 其实可以先Ctrl_v组合键,再按Tab键盘,这样我 ...

  7. Mac下Vim编辑快捷键小结(移动光标)

    Mac下Vim编辑快捷键小结(移动光标) 1.移动到行尾"$",移动到行首"0"(数字),移动到行首第一个字符处"^" 2.移动到段首&qu ...

  8. vim编辑文件警告Swap file already exists ,如何删除vim编辑产生的.swp文件?查看隐藏文件命令

    vim编辑文件警告Swap file already exists,如何删除vim编辑产生的.swp文件?查看隐藏文件命令 Linux(centos7)下多个用户同时编辑一个文件,或编辑时非正常关闭, ...

  9. [转帖]Vim编辑器使用方法详解

    Vim编辑器使用方法详解 程序员小新人学习 2018-12-16 12:26:23 转载于https://www.cnblogs.com/libaoliang/articles/6961676.htm ...

随机推荐

  1. Automatically migrating data to new machines kafka集群扩充迁移topic

    The partition reassignment tool can be used to move some topics off of the current set of brokers to ...

  2. ubuntu集群下ssh配置总结

    最重要的前提就是:集群中的所有机器的用户名和用户组必须一样 一般做法都是在每台机器上新建用户组和用户名. 比如:sudo addgroup sparks 新建用户组sparks: sudo addus ...

  3. win10上如何启用或禁用Windows功能

    Windows10上提供了很多的功能,比如打印服务.传真服务.媒体服务等,怎样启用或禁用某些Windows功能呢? 工具/原料   windows10 方法/步骤     点击左下角的Windows图 ...

  4. 直接运行vue+django项目

    直接运行vue+django项目 下载前后端代码 wget https://files.cnblogs.com/files/pyyu/luffy_boy.zip wget https://files. ...

  5. socket学习笔记(一)

  6. postgresql命令

    连接数据库, 默认的用户和数据库是postgrespsql -U user -d dbname 切换数据库,相当于mysql的use dbname\c dbname列举数据库,相当于mysql的sho ...

  7. [BJOI2015]树的同构

    嘟嘟嘟 判断树的同构的方法就是树上哈希. 如果树是一棵有根树,那么只要从根节点出发dfs,每一个节点的哈希值等于按传统方式算出来的子树的哈希值的结果.需要注意的是,算完子树的哈希值后要先排序再加起来, ...

  8. 深入学习vue指令,自定义指令解决开发痛点

    每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code v-model指令 vue.js的定义是一个mvvm框架,将它发挥到极致能够极大的提升 ...

  9. Nginx系列一:正向代理和反向代理、Nginx工作原理、Nginx常用命令和升级、搭建Nginx负载均衡

    转自https://www.cnblogs.com/leeSmall/p/9351343.html 仅供个人学习 一.什么是正向代理.什么是反向代理 1. 正向代理,意思是一个位于客户端和原始服务器( ...

  10. hyperledge工具-cryptogen

    参考:http://baijiahao.baidu.com/s?id=1596614770784685300&wfr=spider&for=pc cryptogen是Hyperledg ...