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

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

这两个符号有何含义?

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

Hello
Unix

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

ts@TS:~/www/document$ cat -A hello-unix.txt
Hello$
Unix$
ts@TS:~/www/document$

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

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

Hello
DOS

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

ts@TS:~/www/document$ cat -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保存退出,再查看换行符:

ts@TS:~/www/document$ cat -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 文件的转化:dos2unixunix2dos;
  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

转载于:https://www.cnblogs.com/Trekshot/archive/2012/11/26/the-meaning-of-noeol-and-dos-flag-in-vim.html

Vim 编辑器底端 [noeol], [dos] 的含义相关推荐

  1. vim编辑文章后不能修改

    我们在使用vim打开一个文件的时候,经常会弹出下面的界面 为什么会出现这个界面呢 用vim编辑文件(如这里的test.txt)时,系统会自动产生一个文件叫.test.txt.swp.如果正常退出,此文 ...

  2. Vim - 编辑多个文件

    Vim 编辑多个文件 在上一篇的文章中,我们介绍了在 Vim 中窗口分割同一文件,今天学习一下 Vim 编辑多个文件. 语法 : vim <file1> <file2> - 其 ...

  3. linux 普通用户退出vim,Linux环境下VI/VIM编辑文件时无权限保存的解决方法(普通用户)...

    在Linux环境下,如果直接使用VI/VIM命令编辑没有修改权限的文件时,保存的时候就会提示用户无法进行保存操作,一般的解决方法只能是关闭文件重新以sudo权限打开该文件编辑后再保存(前提是用户具有s ...

  4. linux vim编辑文本是 m,linux基础命令介绍四:文本编辑 vim

    本文介绍vim(版本7.4)的一般用法 vim是功能强大的文本编辑器,是vi的增强版. vim [options] [file ..] 使用vim编辑一个文件的最常用命令就是: vim file 其中 ...

  5. 学习笔记(十三)——vim编辑与linux命令

    常用命令 1.命令行 history 查看历史命令! 编号 执行当前命令ls 查看当前的文件夹所有内容ls -a 查看隐藏文件ls -a -l(ls -al) 查看文件的详细信息ls p* 查看文件名 ...

  6. pythonvim编辑教程_使用vim编辑python

    1.vim使用 1.vim进入 vim  1.py         有文件打开无文件新建 2.命令模式 :进入末行模式 3.末行模式 :wq      保存并退出         :q      退出 ...

  7. vim编辑和命令模式、实践

    2019独角兽企业重金招聘Python工程师标准>>> 9月29日任务 5.5 进入编辑模式 5.6 vim命令模式 5.7 vim实践 Vim编辑模式 进入编辑模式 操作 说明 i ...

  8. linux e514写入错误,Linux上使用vim编辑文件保存时报错:E514: write error (file system full?)...

    今天在Linux上使用vim编辑文件保存时报如下错误 E514: write error (file system full?) 从错误看,是磁盘满了,于是使用df -hl查看磁盘使用情况 $ sud ...

  9. docker 中不能用vim编辑文件

    2019独角兽企业重金招聘Python工程师标准>>> docker 中不能用vim编辑文件 2017年08月28日 16:54:29 阅读数:2061 更新来源 apt-get u ...

最新文章

  1. 如何使用React提前三天计划
  2. 5771. 【NOIP2008模拟】遨游
  3. BPM与Portal SSO实施方案v2
  4. 《SQL查询语句4》
  5. 【maven install报错】Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war
  6. 上海职称英语计算机取消,小编简析2017年职称英语考试是否取消
  7. linux的NetworkManager服务(转)
  8. realm android,Realm for Android快速入门教程
  9. 猫哥教你写爬虫 004--数据类型转换-小练习
  10. 职场学会这三招,谁都想跟你交朋友
  11. Solr全文检索学习笔记·记录
  12. Zookeeper ipv6的坑
  13. 【HAVENT原创】CentOS 下 nginx 配置和启动
  14. h5调用第三方app (项目开发思路)
  15. 特斯拉4D成像毫米波雷达与木牛科技早期开源的产品几乎一模一样?
  16. 西宁市财政局容灾备份项目
  17. Visual Studio2010当前不会命中代码,源代码与原始版本不同问题的解决方法
  18. 递归算法转化为非递归算法
  19. 使用 Python+request 实现登入淘宝
  20. python 过采样 权重实现_不平衡数据集的处理 - osc_sqq5osi1的个人空间 - OSCHINA - 中文开源技术交流社区...

热门文章

  1. Android学习笔记之AndroidManifest.xml文件解析(摘自皮狼的博客)
  2. ASP.NET AJAX Advance Tips Tricks (9) DropDownList在Firefox下的奇怪现象和解决方案——谁的BUG?...
  3. 2月第4周回顾:IT求职困惑不少 虚拟化热点不断
  4. 【C++笔记】函数的用法:函数的默认参数、占位参数、函数重载
  5. Git学习(一)本地操作
  6. 聪聪用计算机计算235乘49,四年级数学题库
  7. jQuery窗口调整大小
  8. iOS UIScrollView和缩放
  9. timezone java_如何将Java日期转换为特定的TimeZone格式
  10. Java Singleton类中的线程安全