Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

Sometimes I want the last line of a text file to be a simple string of text with no newline character appended: ...eg. to concatenate another file to it.

Several editors automatically modify my text by adding a newline character, even though I have not pressed Enter.

Remains unmodified: Emacs, SciTE, Kate, Bluefish, Notepad(wine)

Newline is added: Gedit, Gvim, Vim, Nano

I would like to know if there is some way to tweak Gedit, Gvim, and Vim to only save what I have typed.... and even Nano might come in handy

I currently use Gedit, and I'm dabbling in Gvim/Vim.. so it would be useful to know how to "toggle" these on/off...

PS. Upon re-opening the same file in Gedit, Gvim, and Vim, the cursor's end-of-file placement is at the end of the text, whereas it should really show up on the next (empty) line. This is misleading (but that's because of what I'm used to).

I used a hexeditor to check the above observatons.

share|improve this question

2 Answers 2

up vote 17 down vote accepted

For gEdit Install gEdit there does not seem to be a way to disable having a newline inserted at the end.

However, for Vim Install vim (and gVim Install vim) you can - by executing the following option: :set binary. Setting to binary will save the file as is and not insert a newline at the end of the document (Unless there already is one, in which it will be retained). At anytime you can revert this option with :set nobinary.

Nano Install Nano is a little easier. You can launch nano with the -L flag (or --nonewlines if you're more the visual type). This will disable the automatic addition of the newline to the end of the file (so long as one was not actually entered). Ideally you could setup this alias in your ~/.bashrc: alias nanon=nano -L which would launch Nano with the no newlines flag included in it.

Since I don't know exactly what you're doing I'm going to point you to Why should files end with a newline? which may explain why they're there. In short some applications will fail if they don't find an EOL directly before the EOF

share|improve this answer
1  
Thanks Marco, a great answer...The "Why shoulds..." is an interesting collection of "whys"... I'm personally very "newline aware" (that's why I noticed it :) but it is certainly a good reference for everyone (myself included)... but I do prefer to know that I added, or did not add it... Maybe there is an obscure plugin for Gedit... –  Peter.O Nov 15 '10 at 6:02
2  
It seems that for Gvim/Vim it requires two options to be set... as per :help eol ... When writing a file and this option ('eol') is off and the 'binary' option is on, no EOL will be written for the last line in the file. –  Peter.O Nov 15 '10 at 8:25
1  
Gedit (Launchpad) is aware of this issue, and have it on the "wishlist" .... (I wish, but I won't hold my breath for this one! if this extract means anything: "...(it) would rather confuse users" –  Peter.O Nov 15 '10 at 12:03

For gEdit:

If you are using 12.04 or 12.10 (other versions not tested), you can set the behavior already.

  1. Run dconf Editor (dconf-editor)
  2. Go to /org/gnome/gedit/preferences/editor
  3. Uncheck ensure-trailing-newline if you don't want automatically added newline.

ref https://bugs.launchpad.net/ubuntu/+source/gedit/+bug/379367

share|improve this answer
    
Thanks. That's good to know. I've tried it and it works... (+1) –  Peter.O Dec 5 '13 at 23:24

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.