N'ajoutez pas de nouvelle ligne à la fin d'un fichier

11

Vim ajoute toujours une nouvelle ligne à la fin de mes fichiers lors de l'enregistrement, et cela provoque des erreurs dans mes scripts PHP.

Comment puis-je faire en sorte que vim n'ajoute pas cette nouvelle ligne lors de la sauvegarde?

Dan
la source
7
"cela provoque des erreurs dans mes scripts PHP" -> C'est étrange? PHP devrait fonctionner correctement avec une nouvelle ligne de fin. En fait, c'est à peu près standard. Peut-être avez-vous une ligne vide après la ?>sortie de PHP vers le navigateur (provoquant l'erreur "en-têtes déjà envoyés")? Vous n'avez pas besoin d'un suivi ?>, et il est généralement recommandé de le laisser pour éviter exactement ce problème.
Martin Tournoij
Je suppose que c'est trompeur. Nos scripts interprètent toute sortie comme une erreur.
Dan
1
Non. Vim n'ajoute pas de nouvelle ligne.
romainl

Réponses:

11

Ce n'est pas une ligne vide complète, juste une nouvelle ligne finale à la fin de la dernière ligne. Les outils Unix (comme l'héritage de Vim) insistent pour ajouter cela, alors que le système d'exploitation Windows n'est pas si strict. Vous pouvez en savoir plus à ce sujet sur Pourquoi les fichiers devraient-ils se terminer par une nouvelle ligne?

Malheureusement, il est assez complexe d'empêcher Vim d'écrire la nouvelle ligne finale. Mon plugin PreserveNoEOL peut le faire. Pour une discussion sur les approches, voir également VIM Désactiver la nouvelle ligne automatique à la fin du fichier .

Ingo Karkat
la source
Juste pour les futurs lecteurs, bien que cette réponse était géniale à l'époque, dans les versions plus récentes de Vim, il y a une solution beaucoup plus simple dans une réponse publiée plus tard .
Rich
11

Dans les nouvelles versions de Vim, il y a enfin une option pour cela

Vim 7.4.785 ajoute l'option 'fixeol' qui peut être désactivée pour conserver automatiquement tout EOL manquant à la fin du fichier.

(voir la page wiki: http://vim.wikia.com/wiki/Do_not_auto-add_a_newline_at_EOF )

Dans votre ~/.vimrcajouter cette ligne:

set nofixeol

Relancez vim, maintenant il ne devrait pas ajouter la nouvelle ligne à la fin du fichier.

(fonctionne uniquement depuis la version 7.4.785 de vim)

DarthVanger
la source
0

Avez-vous essayé d'ouvrir le fichier en mode binaire? Essayez vim -b file_name. Il ne doit pas ajouter la nouvelle ligne à la fin du fichier.

Ali
la source
J'ai essayé de le faire, puis de l'utiliser xxdpour vérifier, mais cela ajoute toujours un saut de ligne ( 0a) même en mode binaire.
James