GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi Vim ajoute-t-il une nouvelle ligne ? Est-ce une convention ?

La convention pour les fichiers texte Unix est que chaque ligne se termine par un retour à la ligne et que les retours à la ligne sont des fins de ligne et non des séparateurs de ligne.

Lorsque Vim enregistre un tampon sous forme de fichier, il termine chaque ligne avec la séquence de fin de ligne pour ce format de fichier, qui pour Unix est une nouvelle ligne. Voir

:help 'fileformat'

Si vous utilisez des outils de traitement de texte Unix, il est préférable de s'en tenir à cette convention. Cependant, si vous avez besoin de ne pas mettre de saut de ligne à la fin de la dernière ligne d'un fichier, vous pouvez le faire. Vim considère ces fichiers comme "binaires". Voir

:help 'binary'
:help edit-binary

Vim 8.0 le prévoit désormais avec le fixeol option. Plus précisément si vous le faites :

:set nofixeol

alors Vim ne le fera pas ajoutez un caractère de fin de ligne à la fin de la dernière ligne si le fichier n'en avait pas déjà un.

Cela pourrait aller dans un plugin de type de fichier, ou peut-être même votre .vimrc .

(Il s'agit d'une amélioration par rapport à :set binary car il n'affecte que le dernier caractère de saut de ligne, alors que binary modifie également un tas d'autres comportements, ce que vous ne voulez probablement pas, sauf si vous modifiez réellement un fichier binaire.)

Un fichier nouvellement créé aura toujours un caractère de saut de ligne à la fin par défaut. Vous pouvez changer cela (et changer un fichier qui a déjà une nouvelle ligne finale pour ne pas en avoir) en faisant en plus :

:set noeol

Cela doit être défini spécifiquement pour chaque fichier que vous souhaitez modifier :le chargement d'un fichier dans un tampon définira toujours eol pour correspondre à l'état actuel du fichier.


Vim n'ajoute rien que vous n'y ayez pas mis vous-même.

Un caractère "newline" n'est pas une "nouvelle ligne" et les deux exemples sont parfaitement normaux :

  • dans le premier, le fichier ne contient qu'une seule ligne donc vous obtenez un caractère "newline",
  • dans le second, le fichier contient deux lignes, vous obtenez donc deux caractères "newline".

Linux
  1. Boîte occupée lire le fichier ligne par ligne ?

  2. Remplacer la nouvelle ligne par Nul ?

  3. Supprimer les séquences barre oblique inverse + retour à la ligne ?

  4. Aller au début ou à la fin du fichier dans Vim [Quick Tip]

  5. Ajout d'une section au fichier ELF

Comment lire un fichier ligne par ligne dans Bash

Éditeur VIM

vim :commande introuvable

Pourquoi avons-nous besoin du fichier .so.1 sous Linux ?

Pourquoi utiliser shm_open ?

Ansible décommenter la ligne dans le fichier