如何阻止 Gedit、Gvim、Vim、Nano 添加文件尾换行符?

Pet*_*r.O 48 vim gedit text-editor gvim

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

一些编辑器通过添加换行符自动修改我的文本,即使我没有按下Enter

Remains unmodified: Emacs、SciTE、Kate、Bluefish、记事本(葡萄酒)

Newline is added: Gedit、Gvim、Vim、Nano

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

我目前使用 Gedit,我正在涉足 Gvim/Vim ..所以知道如何“切换”这些开/关会很有用......

附注。在 Gedit、Gvim 和 Vim 中重新打开同一个文件时,光标的文件结尾位置在文本的末尾,而它应该真正显示在下一行(空)上。这是误导性的(但那是因为我已经习惯了)。

我使用了十六进制编辑器来检查上述观察。

Mar*_*ppi 54

对于gEdit ,似乎没有办法禁用在末尾插入换行符,请参阅此答案

对于Vim的(和gVim的),你可以-通过执行以下选项::set binary。设置为 binary 将按原样保存文件,并且不会在文档末尾插入换行符(除非已经有一个换行符,它将被保留)。您可以随时使用 恢复此选项:set nobinary

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

由于我不确切知道您在做什么,我将向您指出为什么文件应以换行符结尾?这可以解释为什么他们在那里。简而言之,某些应用程序如果EOLEOF.

  • 似乎对于 Gvim/Vim,它需要设置两个选项...根据 **:help eol** ... `当写入文件并且此选项 ('eol') 关闭且 'binary' 选项是打开的,不会为文件的最后一行写入 EOL。` (3认同)
  • 对于 nano,您可以将 `set nonewlines` 放在 ~/.nanorc(或 /etc/nanorc)中以默认使用 `-L` 模式。 (2认同)

小智 17

对于 gEdit:

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

通过图形用户界面:

  1. 运行 dconf 编辑器 ( dconf-editor)
  2. orggnome? gedit? preferences? editor
    (或只是搜索ensure-trailing-newline
  3. ensure-trailing-newline如果您不想自动添加换行符,请取消选中。

在命令行上:

  1. 打开终端 ( ctrl+ alt+ T)
  2. 输入以下命令

    gsettings set org.gnome.gedit.preferences.editor ensure-trailing-newline false
    
    Run Code Online (Sandbox Code Playgroud)

    你就完成了。

参考 | 启动板错误