微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么gedit和vim会隐藏用户的最后一个换行符?

假设我们有两个文本文档:

>我们的第一个文件包含“hi”作为文本.
>我们的第二个文件包含“hi”作为文本.

当我们在gedit,vi或vim中打开这两个文件时,这两个文件在各个方面都是视觉上相同的.

但是,当我们在文件上运行xxd时,我们得到以下内容

>我们的第一个文件的十六进制内容为:6869
>我们的第二个文件的十六进制内容为:6869 0a

啊哈!有一个看不见的换行符.在vim中,如果我们足够关注状态栏,碰巧了解[noeol]的意思,那么我们可能会接受这一点,但是在gedit中,两个文件打开完全一样!

一个小的调查中,当我要求人们使用gedit或vim来区分这两个文件时,他们在100%的时间内失败了.当我要求他们使用leafpad或emacs完成相同的任务时,他们在100%的时间内成功了.

我知道vi和gedit想要为他们创建的每个文件添加一个换行符(我承认这可能有优势).我不明白的是为什么gedit和vim觉得用户隐藏这个换行符是有益的吗?特别是当这种行为有潜在的极大破坏性时

(Take for instance the two C-programmers who see the contents of these two files the same in their vi/gedit text editor,and then assuming what they see is what they get,go on to write the contents into the array char greeting[2]. The first programmer writing the first file – although a bit sloppy with his code – goes on to fame and fortune,but the second programmer writing the second file,dies in miserable poverty,confused and bewildered by this invisible (and preventable) stack overflow.)

所以请告诉我们,vim和gedit这样的文本编辑器在他们创建的每个文档的末尾添加不可见的换行符的优点是什么,然后继续隐藏用户的这些换行符,以便这些文件的真实内容才可见可以使用其他文本编辑器检测?

解决方法

你将最后一行视为“视觉隐藏”源于相反的观点.

许多人(特别是Unix背景)认为,文本文件应该始终以换行符结尾(例如参见Why should files end with a newline?),任何允许创建文件的文本编辑器都将被彻底打破.从这个角度来看,Vim中没有额外的空行只能与这个世界观相一致.文件出现在编辑器中,就像它在终端中一样.

从Vim的角度来看,一个缺少换行符的文件是邪教和缺陷的;这就是为什么它被加载的[noeol]消息指示(并且很难编辑文件,同时保持缺少的换行符;虽然我已经写了PreserveNoEOL plugin来帮助).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


解决方案:解决linux下vim乱码的情况:(修改vimrc的内容)全局的情况下:即所有用户都能用这个配置文件地址:/etc/vimrc在文件中添加:setfileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936settermencoding=utf-8setencoding=utf-8如果只修改个人的vim配置情况:需要把/etc/
Linuxvi/vim所有的UnixLike系统都会内建vi文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是vim编辑器。vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。相关文章:史上最全Vim快捷键键位图—入门到进阶什么是vim
      vim正则匹配:空行:/^$/  /^[\t]*$/注释行:/^#/ /^[\t]*#/:1,$s/\([Rr]\)oot/\1ename/:1,$s/\(square\)and\(fair\)/\2and\1/ 
$select-editorSelectaneditor.Tochangelater,run'select-editor'.1./bin/ed2./binano<----easiest3./usr/bin/code4./usr/bin/vim.basic5./usr/bin/vim.tinyChoose1-5[2]:4
上次手贱忘了保存,这次就简单做个备忘吧,把踩过的坑记一下预览图安装工具:u盘、manjarokdeminimal20.0.3、win32DiskImager提取码:qt9f进bios、选择u盘启动、改语言、改时区、挂载分区(文件系统ext4、在200M左右的一个FAT分区上挂载/boot/efi)、安装安装很简单,按提示
Linux之文本编译器小结vim的优势所有的UNIX-LIKE习通都会内置vi文本编译器,其他的文本编译器则不一定存在很多软件的编译接口都会主动调用vivim有很强的程序编译能力,可以主动的一字体颜色辨别语法的正确性,方便程序设计因为程序简单,编译速度相当快vi的使用一般命令模
主机名字太长,怎么修改?  1.sudovim/etc/hostname 修改内容为wel,  本地主机名 2.sudovim/etc/hosts      修改主机名为wel,用于网络连接中主机名的识别 3.reboot 
目录#事故现场#事故原因#解决方法方法一:使用notepad转换方法二:使用vscode转换方法三:使用vim转换#参考#事故现场执行shell脚本文件,报错::notfound.sh:6:coreinstall.sh:查看脚本文件第6行,发现是空行;#事故原因window下的换行是回车符+换行符,也就是\r\n,而unix下是换行符\n
1、保存并退出linux下安装好了vim以及gcc后,我们开始新建一个c文件,例如:vimtest.c之后进入vim的编辑框中,点击i进入插入模式,开始编辑程序,当你编写好自己的程序之后,按Esc退出插入编辑状态,然后输入冒号加wq,点击Enter即可,完整的命令如下:wq如下图:  退出后,如果想要编译
概述使用VIM作简单字数统计背景想做一个简单的字数统计环境OSwin10shellmintty-2.9.41.需求概述需求需求统计文段内字符的数量支持自定义字符集2.方案1:vim自带统计概述vim自带方案操作定位到文段内某行vi