Wie kann ich verhindern, dass Gedit, Gvim, Vim, Nano Zeilenende-Zeichen hinzufügen?

42

Manchmal möchte ich, dass die letzte Zeile einer Textdatei eine einfache Textfolge ohne angefügtes Zeilenumbruchzeichen ist : ... zB. eine andere Datei zu verketten.

Einige Editoren ändern meinen Text automatisch durch Hinzufügen eines Zeilenumbruchs, obwohl ich die Eingabetaste nicht gedrückt habe .

Remains unmodified: Emacs, SciTE, Kate, Bluefish, Notizblock (Wein)

Newline is added: Gedit, Gvim, Vim, Nano

Ich würde gerne wissen, ob es eine Möglichkeit gibt, Gedit, Gvim und Vim zu optimieren, um nur das zu speichern, was ich eingegeben habe ... und sogar Nano könnte sich als nützlich erweisen

Ich verwende derzeit Gedit und beschäftige mich mit Gvim / Vim. Es wäre also nützlich zu wissen, wie man diese ein- und ausschaltet.

PS . Beim erneuten Öffnen derselben Datei in Gedit, Gvim und Vim befindet sich das Dateiende des Cursors am Ende des Texts, während es in der nächsten (leeren) Zeile angezeigt werden sollte. Das ist irreführend (aber das liegt daran, was ich gewohnt bin).

Ich habe einen Verhexer benutzt, um die obigen Beobachtungen zu überprüfen.

Peter.O
quelle

Antworten:

49

Für gEdit scheint es keine Möglichkeit zu geben, das Einfügen einer neuen Zeile am Ende zu deaktivieren, siehe diese Antwort .Installieren Sie gEdit

Für Vim Installieren Sie vim (und gVim Installieren Sie vim ) Sie können - durch die folgende Option ausführen: :set binary. Wenn Sie Binär festlegen, wird die Datei so gespeichert, wie sie ist, und am Ende des Dokuments wird keine neue Zeile eingefügt (es sei denn, es gibt bereits eine, in der sie beibehalten wird). Sie können diese Option jederzeit mit zurücksetzen :set nobinary.

Nano Installieren Sie Nano ist ein bisschen einfacher. Sie können Nano mit der -LFlagge starten (oder --nonewlineswenn Sie eher der visuelle Typ sind). Dadurch wird das automatische Hinzufügen des Zeilenumbruchs zum Ende der Datei deaktiviert (solange noch keiner eingegeben wurde). Idealerweise können Sie diesen Alias ​​in Ihrem ~/.bashrc: alias nano="nano -L"einrichten, wodurch Nano mit dem darin enthaltenen Flag "Keine Zeilenumbrüche" gestartet wird!

Da ich nicht genau weiß, was Sie tun, zeige ich Sie auf Warum sollten Dateien mit einem Zeilenumbruch enden? was erklären mag, warum sie da sind. Kurz gesagt, einige Anwendungen schlagen fehl, wenn sie keine EOLdirekt vor dem findenEOF

Marco Ceppi
quelle
1
Danke Marco, eine tolle Antwort ... Das "Warum sollte ..." ist eine interessante Sammlung von "Warum" ... Ich persönlich bin mir sehr "Newline bewusst" (deshalb habe ich es bemerkt :) aber es ist auf jeden Fall eine Eine gute Referenz für alle (ich selbst eingeschlossen) ... aber ich möchte lieber wissen, dass ich sie hinzugefügt oder nicht hinzugefügt habe ... Vielleicht gibt es ein obskures Plugin für Gedit ...
Peter.O 15.11.10
3
Es scheint, dass für Gvim / Vim zwei Optionen festgelegt werden müssen ... gemäß : 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
1
Gedit (Launchpad) ist sich dieses Problems bewusst und hat es auf der "Wunschliste" ) würde die Benutzer eher verwirren "
Peter.O
2
Für Nano können Sie set nonewlines~ / .nanorc (oder / etc / nanorc) eingeben, um -Lstandardmäßig den Modus zu verwenden .
Mwfearnley
Verwenden Sie editorconfig (editorconfig, org) - Plugins, die für vim und gedit verfügbar sind. Geben Sie die gewünschten Optionen in Ihrer .editorconfig-Datei an.
DDBUG
16

Für gEdit:

Wenn Sie Ubuntu 12.04 oder höher verwenden, können Sie das Verhalten bereits einstellen.

Über eine grafische Benutzeroberfläche:

  1. Führen Sie den dconf Editor aus ( dconf-editor)
  2. Gehe zu orggnomegeditpreferenceseditor
    (oder suche einfach nach ensure-trailing-newline)
  3. Deaktivieren ensure-trailing-newlineSie dieses Kontrollkästchen, wenn Sie nicht automatisch neue Zeilen hinzufügen möchten.

In der Befehlszeile:

  1. Öffne ein Terminal ( ctrl+ alt+ T)
  2. Geben Sie den folgenden Befehl ein

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

    und du bist fertig.

Referenz | Launchpad-Fehler

Ravi Gadhia
quelle
1
Vielen Dank. Das ist gut zu wissen. Ich habe es versucht und es funktioniert ... (+1)
Peter.O
Was ist mit Pluma Editor? (Siehe nicht "Sicherstellen-Hinter-Newline" für Pluma)
Ajcg
0

Wenn Sie nur eine einzeilige Datei schreiben möchten, ist Echo wahrscheinlich die einfachste Lösung:

echo -n "the contents of my file" > myfile
jpillora
quelle