2010-04-20 24 views
3

Je dois souvent éditer des fichiers script, l'interpréteur pour lequel traite les fichiers qui ont un marqueur EOL sur la dernière ligne du fichier comme un erreur (c'est-à-dire que le fichier traite CRLF comme "newlines", pas comme "fins de ligne").Éditer un fichier avec vim qui n'a pas de marqueur EOL sur la dernière ligne mais qui a des fins de ligne CRLF

Actuellement, j'ouvre ces fichiers dans Vim en utilisant le mode binaire (-b sur la ligne de commande). Il détecte automatiquement le manque d'EOL sur la dernière ligne et définit l'option "noeol" de manière appropriée, ce qui l'empêche d'écrire un EOL sur la dernière ligne. Comme le fichier a des fins de ligne CRLF, j'ai beaucoup de ^M s à la fin de mes lignes (parce qu'il interprète seulement les fins de ligne de style Unix en mode binaire, semble-t-il). Je ne peux pas l'ouvrir en mode texte car l'option "noeol" est ignorée pour les fichiers non-binaires.

Ceci est très ennuyeux, et je dois toujours me souvenir de taper manuellement le ^M à la fin de chaque ligne! Est-ce que je peux le forcer à accepter les fins de ligne DOS en mode binaire, ou le forcer à écouter l'option EOL en mode texte?

Répondre

0

pouvez-vous exécuter la commande dos2unix avant d'éditer?

+0

Je pensais que cela détruirait le fichier, mais il semble fonctionner très bien. Ce n'est pas une solution idéale du tout, et je tenais à une meilleure réponse, mais je suppose que l'un ne vient pas ... Je vais accepter celui-ci, mais je pourrais choisir une meilleure réponse si elle se présente. – rmeador

0

Oui, vous ne devriez pas avoir besoin d'entrer manuellement un ^M sur chaque ligne; ce serait ennuyeux! Essayez d'entrer ceci:

:set ff=dos 

Vous pouvez trouver cet article utile: change end-of-line format for dos-unix

sur un examen plus approfondi, une recherche globale et remplacer est probablement neccessary, donc donner ce coup. (Je l'ai testé ceci plus tôt aujourd'hui et cela a fonctionné sur un fichier unix en cours d'édition avec gvim dans Windows XP, et non en mode binaire.)

:%s/^M//g 

type qui commande exactement comme indiqué à l'exception du ^M, qui est Caractère spécial. La façon dont vous le produisez est d'appuyer sur Ctrl et v ensemble puis appuyez sur Enter (laisser sur CRTL + V avant de frapper entrer)

+0

Je suis conscient de la définition du format de fichier en mode DOS pour les fichiers texte. Cela ne semble pas fonctionner en mode binaire. J'ai essayé d'utiliser cette commande à la fois après l'ouverture du fichier et en utilisant --cmd sur la ligne de commande. Aucun n'a eu aucun effet. – rmeador