12
votes

Pouvez-vous forcer Vim à montrer une ligne vierge à la fin d'un fichier?

Lorsque j'ouvre un fichier texte dans le bloc-notes, il affiche une ligne vide s'il y a un retour de chariot à la fin de la dernière ligne contenant du texte. Cependant, dans Vim, cela ne montre pas cette ligne vide. Une autre chose que j'ai remarquée est que l'éditeur VIM ajoute un retour de chariot à la dernière ligne par défaut (même s'il ne le montre pas). Je peux le dire, car si j'ouvre un fichier dans un bloc-notes créé dans Vim, il affiche une ligne vierge à la fin du fichier.

Quoi qu'il en soit, je peux vivre avec ces deux différences, mais je me demande s'il y a une option dans Vim qui vous permet de basculer ce comportement.

merci

PS - GVIM 7.2

[mise à jour]

Cela donnerait-il un sens à la faute du serveur à la place?

[mise à jour 2]

Je vais reformuler cela ... Je dois savoir quand il y a un retour de chariot à la fin du fichier de ligne unique (le bloc-notes montre une ligne supplémentaire sans texte, avec Vim je ne peux pas dire). Cela est dû à un programme de progrès qui lit un fichier texte (s'attend à une seule ligne, mais avec un retour de chariot) et analyse le texte à quelque sorte. S'il n'y a pas de retour de chariot, la progression traite la ligne comme si elle est null.

[solution de contournement] Une façon d'assurer un retour de chariot (mais assurez-vous d'ajouter une seconde) est de vous assurer que j'ai l'option d'écriture finale allumée (: définissez eol), puis faire un Écrire / enregistrer. Cela mettra fin de ligne dans le fichier si ce n'est pas déjà là. Sinon, cela n'en ajoute pas un nouveau.


3 commentaires

Cela ne ferait aucun sens sur Serverfault. Peut-être sur superutilisateur. Mais il semble que le consensus soit pour tolérer les questions de Vim ici car Vim est considéré comme une IDE.


Ok merci ... je me demande si superutilisateur est hors de la version bêta privée ... suppose que je peux aller chèque


Il est toujours en version bêta, mais pas en privé, mais en bêta semi-privé: blog.stackoverflow.com/2009/07/...


4 Réponses :


6
votes
:help endofline
explains how you could stop vim from adding an extra newline.

2 commentaires

Résout un problème ... c'est l'autre (ne montrant pas qu'il existe une ligne vierge) qui est la plus grande question pour moi, cependant = \ a à voir avec besoin de vous assurer qu'il y a un retour de chariot à la fin d'une ligne (et seulement un).


Je suis d'accord que je veux la ligne là-bas, je veux aussi aussi pouvoir voir que c'est là.



2
votes

Une option VIM utile est

set list


4 commentaires

Cela semble toujours montrer un caractère $. Même s'il n'y a pas de ligne vide après.


Il n'y a pas de ligne vierge après. Vim considère une ligne quelque chose qui a une nouvelle ligne à sa fin. La ligne vierge dont vous parlez n'a pas de nouvelle ligne, alors Vim conclut qu'il n'y a rien à afficher.


Voir Mettre à jour 2 commentaires ... Reformulez la question à être plus précise.


Je confirme que même si "DIFF" imprime une différence entre ces fichiers, à l'aide de : list ces fichiers semblent être identiques.



1
votes

Lorsque vous ouvrez le fichier dans VIM, la ligne d'état doit indiquer [noeol] après le nom de fichier. C'est donc une indication. Comme manni a déclaré, vous pouvez modifier ceci en définissant à la fois l'option endofline OFF et le Option binaire sur. Vous pouvez définir ceci comme paramètres par défaut dans un fichier .vimrc .


0 commentaires

3
votes

Il semble que Vim traite la nouvelle ligne en tant que terminateur de ligne, tandis que le bloc-notes le traite en tant que séparateur de ligne: de http://en.wikipedia.org/wiki/newline

Il y a aussi une certaine confusion si les nouvelles lignes terminent ou séparent des lignes. Si une nouvelle ligne est considérée comme une séparateur, il n'y aura pas de nouvelle ligne après la dernière ligne d'un fichier. Le Convention générale sur la plupart des systèmes est ajouter une nouvelle ligne même après le dernier ligne, c'est-à-dire de traiter la nouvelle ligne comme une ligne Terminator. Certains programmes ont problèmes de traitement de la dernière ligne d'un Fichier si ce n'est pas une nouvelle ligne terminée. Inversement, des programmes qui attendent nouvelle ligne à utiliser comme séparateur interpréter une nouvelle ligne finale comme départ une nouvelle ligne (vide). Cela peut entraîner Un compte de ligne différent étant signalé pour le fichier, mais est autrement généralement inoffensif.

Si je vous rappelle correctement, sur les systèmes UNIX-Y Un fichier texte doit être terminé avec une nouvelle ligne.


0 commentaires