问题描述
有时我希望文本文件的最后一行是一个简单的文本字符串,不附加换行符:…例如。将另一个文件连接到它。
多个编辑器通过添加换行符自动修改我的文本,即使我没有按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(和gVim),您可以 – 通过执行以下选项::set binary
。设置为二进制文件将按原样保存文件,而不是在文档末尾插入换行符(除非已存在,否则将保留该文件)。您可以随时使用:set nobinary
恢复此选项。
Nano更容易一些。您可以使用-L
标志启动nano(如果您的视觉类型更多,则可以启用--nonewlines
)。这将禁止将换行符自动添加到文件末尾(只要实际没有输入)。理想情况下,您可以在~/.bashrc
中设置此别名:alias nano="nano -L"
,它将启动Nano,其中包含no newlines标志!
由于我不确切知道你在做什么,我将指向Why should files end with a newline?,这可以解释为什么他们在那里。简而言之,如果在EOF
之前没有找到EOL
,某些应用程序将会失败
次佳解决方案
对于gEdit:
如果您使用的是Ubuntu 12.04或更高版本,则可以设置该行为。
通过图形用户界面:
-
运行dconf编辑器(
dconf-editor
) -
转到
org
→gnome
→gedit
→preferences
→editor
(或只搜索ensure-trailing-newline
) -
如果您不想自动添加换行,请取消选中
ensure-trailing-newline
。
在命令行上:
-
打开终端(
ctrl
+alt
+T
) -
输入以下命令
gsettings set org.gnome.gedit.preferences.editor ensure-trailing-newline false
你完成了