Comment empêcher Gedit, Gvim, Vim, Nano d’ajouter un caractère de nouvelle ligne à la fin du fichier?

42

Parfois, je souhaite que la dernière ligne d’un fichier texte soit une simple chaîne de texte sans caractère de nouvelle ligne : ... par exemple. concaténer un autre fichier.

Plusieurs éditeurs modifient automatiquement mon texte en ajoutant un caractère de nouvelle ligne, même si je n’ai pas appuyé sur Entrée .

Remains unmodified: Emacs, SciTE, Kate, Bluefish, Bloc-notes (vin)

Newline is added: Gedit, Gvim, Vim, Nano

J'aimerais savoir s'il existe un moyen de modifier Gedit, Gvim et Vim pour ne sauvegarder que ce que j'ai dactylographié ... et même Nano pourrait s'avérer utile

J'utilise actuellement Gedit, et je bricole dans Gvim / Vim .. il serait donc utile de savoir comment "activer / désactiver" ces fonctions on / off ...

PS . Lors de la réouverture du même fichier dans Gedit, Gvim et Vim, l’emplacement de fin de fichier du curseur se trouve à la fin du texte, alors qu’il devrait apparaître dans la ligne suivante (vide). C'est trompeur (mais c'est à cause de ce à quoi je suis habitué).

J'ai utilisé un hexeditor pour vérifier les observatons ci-dessus.

Peter.O
la source

Réponses:

49

Pour gEdit, il ne semble pas y avoir de moyen de désactiver l’insertion d’une nouvelle ligne à la fin, voir cette réponse .Installer gEdit

Pour Vim Installer vim (et gVim Installer vim ) , vous pouvez - en exécutant l'option suivante: :set binary. Définir sur binaire enregistre le fichier tel quel et n’insère pas de nouvelle ligne à la fin du document (sauf s’il en existe déjà une dans laquelle il sera conservé). À tout moment, vous pouvez annuler cette option avec :set nobinary.

Nano Installer Nano est un peu plus facile. Vous pouvez lancer nano avec le -Ldrapeau (ou --nonewlinessi vous êtes plutôt du type visuel). Cela désactivera l'ajout automatique de la nouvelle ligne à la fin du fichier (tant que celle-ci n'a pas été entrée). Idéalement, vous pouvez configurer cet alias dans votre ~/.bashrc: alias nano="nano -L"qui lancera Nano avec l'indicateur no newlines inclus!

Puisque je ne sais pas exactement ce que vous faites, je vais vous indiquer pourquoi les fichiers doivent se terminer par une nouvelle ligne. ce qui peut expliquer pourquoi ils sont là. En bref, certaines applications échoueront si elles ne trouvent pas EOLdirectement avant leEOF

Marco Ceppi
la source
1
Merci Marco, une excellente réponse ... Le "Why shoulds ..." est une collection intéressante de "pourquoi" ... personnellement, je suis très "conscient de la nouvelle ligne" bonne référence pour tout le monde (y compris moi-même) ... mais je préfère savoir que j'ai ajouté, ou ne l'ai pas ajouté ... Peut-être existe-t-il un obscur plugin pour Gedit ...
Peter.O
3
Il semble que pour Gvim / Vim, il soit nécessaire de définir deux options ... conformément à : 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) est conscient de ce problème et l’a inscrit sur la "liste de souhaits" .... (Je souhaite, mais je ne retiendrai pas mon souffle pour celui-ci! ) préfèrerait dérouter les utilisateurs "
Peter.O
2
Pour nano, vous pouvez set nonewlinesutiliser ~ / .nanorc (ou / etc / nanorc) pour utiliser le -Lmode par défaut.
mwfearnley
Utilisez editorconfig (editorconfig, org) - plugins disponibles pour vim et gedit. Spécifiez les options souhaitées dans votre fichier .editorconfig.
ddbug
16

Pour gEdit:

Si vous utilisez Ubuntu 12.04 ou une version ultérieure, vous pouvez déjà définir le comportement.

Via une interface utilisateur graphique:

  1. Exécuter dconf Editor ( dconf-editor)
  2. Aller à orggnomegeditpreferenceseditor
    (ou simplement rechercher ensure-trailing-newline)
  3. Décochez ensure-trailing-newlinesi vous ne voulez pas que les sauts de lignes soient ajoutés automatiquement.

Sur la ligne de commande:

  1. Ouvrir un terminal ( ctrl+ alt+ T)
  2. entrez la commande suivante

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

    et tu as fini.

Référence | Bug du tableau de bord

Ravi Gadhia
la source
1
Merci. C'est bon à savoir. J'ai essayé et ça marche ... (+1)
Peter.O
qu'en est-il de l'éditeur de pluma? (ne voyez pas "assure-trailing-newline" pour pluma)
ajcg
0

Si vous voulez juste écrire un fichier d'une seule ligne, alors echo est probablement la solution la plus simple:

echo -n "the contents of my file" > myfile
Jpillora
la source