当前位置: 首页>>技术教程>>正文


如何阻止Gedit,Gvim,Vim,Nano添加End-of-File换行符?

, , , ,

问题描述

有时我希望文本文件的最后一行是一个简单的文本字符串,不附加换行符:…例如。将另一个文件连接到它。

多个编辑器通过添加换行符自动修改我的文本,即使我没有按Enter键。

Remains unmodified: Emacs,SciTE,凯特,蓝鱼,记事本(葡萄酒)

Newline is added: Gedit,Gvim,Vim,Nano

我想知道是否有某种方法来调整Gedit,Gvim和Vim只能保存我输入的内容….甚至Nano也可以派上用场

我目前使用Gedit,而且我正在使用Gvim /Vim ..所以知道如何开启/关闭”toggle”这将是有用的…

PS。当re-opening与Gedit,Gvim和Vim中的文件相同时,光标的end-of-file位置位于文本的末尾,而它应该显示在下一个(空)行上。这是误导性的(但那是因为我已经习惯了)。

我用一个hexeditor来检查上面的观察。

最佳解决方案

对于gEdit,似乎没有办法禁止在末尾插入换行符,请参阅this answer

vim,text-editor,gedit,gvim,ubuntu

对于Vim(和gVim),您可以 – 通过执行以下选项::set binary。设置为二进制文件将按原样保存文件,而不是在文档末尾插入换行符(除非已存在,否则将保留该文件)。您可以随时使用:set nobinary恢复此选项。

vim,text-editor,gedit,gvim,ubuntu

vim,text-editor,gedit,gvim,ubuntu

Nano更容易一些。您可以使用-L标志启动nano(如果您的视觉类型更多,则可以启用--nonewlines)。这将禁止将换行符自动添加到文件末尾(只要实际没有输入)。理想情况下,您可以在~/.bashrc中设置此别名:alias nano="nano -L",它将启动Nano,其中包含no newlines标志!

vim,text-editor,gedit,gvim,ubuntu

由于我不确切知道你在做什么,我将指向Why should files end with a newline?,这可以解释为什么他们在那里。简而言之,如果在EOF之前没有找到EOL,某些应用程序将会失败

次佳解决方案

对于gEdit:

如果您使用的是Ubuntu 12.04或更高版本,则可以设置该行为。

通过图形用户界面:

  1. 运行dconf编辑器(dconf-editor)

  2. 转到orggnomegeditpreferenceseditor(或只搜索ensure-trailing-newline)

  3. 如果您不想自动添加换行,请取消选中ensure-trailing-newline

在命令行上:

  1. 打开终端(ctrl + alt + T)

  2. 输入以下命令

    gsettings set org.gnome.gedit.preferences.editor ensure-trailing-newline false
    

    你完成了

Reference | Launchpad bug

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/6226.html,未经允许,请勿转载。