Pouvez-vous forcer Vim à afficher une ligne vide à la fin d'un fichier?
-
05-07-2019 - |
Question
Lorsque j'ouvre un fichier texte dans le Bloc-notes, il affiche une ligne vide s'il existe un retour chariot à la fin de la dernière ligne contenant du texte. Cependant, dans Vim, cette ligne vide n’est pas affichée. Une autre chose que j'ai remarquée est que l'éditeur Vim ajoute un retour chariot à la dernière ligne par défaut (même s'il ne l'affiche pas). Je peux le dire, car si j’ouvre un fichier créé dans Vim dans le Bloc-notes, 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 existe une option dans Vim qui vous permet d’activer ce comportement.
Merci
PS - GVim 7.2
[Mise à jour]
Cela aurait-il du sens d'être à la place sur Server Fault?
[Mise à jour 2]
Je vais reformuler ceci ... J'ai besoin de savoir quand il y a un retour chariot à la fin d'un fichier simple ligne (Le Bloc-notes affiche une ligne supplémentaire sans texte, avec Vim, je ne le sais pas). Cela est dû à un programme Progress qui lit un fichier texte (attend une seule ligne, mais avec un retour à la ligne) et analyse le texte à certaines fins. S'il n'y a pas de retour chariot, Progress traite la ligne comme si elle était nulle.
[Solution de contournement] Un moyen que j’ai trouvé pour s’assurer qu’il existe un retour chariot (mais assurez-vous de ne pas en ajouter un second) est de vous assurer que l’option d’écriture de fin de ligne est activée (: set eol) et que écrire / sauvegarder. Cela mettra une fin de ligne dans le fichier si ce n'est déjà fait. Sinon, il n'en ajoute pas un nouveau.
La solution
:help endofline
explique comment vous pouvez empêcher vim d'ajouter une nouvelle ligne.
Autres conseils
Il semble que vim considère newline comme un terminateur de ligne, alors que le bloc-notes le traite comme un séparateur de ligne: from http://fr.wikipedia.org/wiki/Newline
Il existe également une certaine confusion quant à savoir si les nouvelles lignes se 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 la dernière ligne, c’est-à-dire traiter newline comme une ligne terminateur. Certains programmes ont problèmes de traitement de la dernière ligne d'un file si ce n'est pas newline terminé. Inversement, les programmes qui attendent newline à utiliser comme séparateur interpréter une nouvelle ligne comme débutant une nouvelle ligne (vide). Cela peut entraîner nombre de lignes différent signalé pour le fichier, mais est autrement généralement inoffensif.
Si je me souviens bien, sur les systèmes unix-y, un fichier texte doit être terminé par une nouvelle ligne.
Une option utile de Vim est
set list
Cela vous aidera à voir tous les caractères de fin de ligne (et éventuellement d’autres caractères généralement invisibles). Vous pourrez donc visualiser cette dernière ligne de fin directement dans Vim et pas seulement dans le Bloc-notes.
Lorsque vous ouvrez le fichier dans VIM, la ligne d'état doit indiquer [noeol]
après le nom du fichier. Donc, c'est une indication. Comme Manni a été dit, vous pouvez changer cela en désactivant l'option endofline
et le paramètre option binaire
sur. Vous pouvez définir ceci comme paramètres par défaut dans un fichier .vimrc
.