2009-10-01 6 views
29

dans gvim sur windows si j'ai du texte avec CRLF eol alors le texte affichera^M à la fin de chaque ligne.dans Vim comment puis-je cacher l'eol doc chars^M

Comment cacher ce caractère spécial de l'affichage?

le:.. Commande set nolist "" » ne négligez pas ce Je suis déconcerté

MISE À JOUR

je l'ai fait: set fileformats = unix, dos comme une liste, mais il ne fonctionne pas d'abord. J'ai fermé le dossier et rouverte à nouveau et cela a fonctionné. par défaut j'avais mis fileformats seulement valeur unix. Merci pour les réponses.

Répondre

28

Vous pouvez définir fileformat-dos.

:ed ++ff=dos % 
+2

Cela semble "réparer" le fichier en ajoutant dos linebreaks partout où ils sont manquants, ce qui peut être ce qui amène vim à afficher les marqueurs^M (était dans mon cas). – numerodix

+0

Pouvons-nous lier cette commande à un keymap? – deeJ

+2

Cette réponse et la réponse de @ jqno sont "correctes", mais de différentes manières. ': e ++ ff = dos%' rouvrira le fichier en cours en mode DOS/Windows. ': set fileformats = dos' provoquera l'ouverture de tous les fichiers ouverts en mode DOS/Windows. Une bonne explication avec tous les détails est disponible à http://vim.wikia.com/wiki/File_format –

0
:0,$ s/<ctrl-v><ctrl-m>//g 
:set ff=dos 
0

, utilisez la commande:

:1,$ s/^v^M/ /g 
+2

Cacher, ne pas supprimer. –

+0

touche' - J'ai manqué ce point plus fin (même si j'ai * fait * une copie, plutôt que d'écraser l'original) – Roboprog

1

Le format de fichier est habituellement détecté automatiquement. Vous devez avoir des lignes mixtes Unix et DOS/Windows dans votre fichier.

essayer ce pour le nettoyer (où "propre" = unix format):

% tr -d '\015' <old.file> new.file 
+0

Euh, vous avez dit "sur windows". Oops. Eh bien, souffrir, alors? Tout le monde a cygwin, non? Je suppose qu'il y a beaucoup plus de programmeurs Windows que de programmeurs * nix, mais j'ai tendance à l'oublier (malgré le démarrage de MS-DOS dans les années 80). Je ne supporte pas la chose, moi-même ... – Roboprog

16

les cacher:

:set fileformats=dos 

Pour les supprimer (vous pouvez ensuite enregistrer le fichier un fichier unix):

:%s/\r//g 
+2

Dans mon cas, après avoir fait ': set fileformats = dos', j'ai dû recharger le fichier via': e% '. Ensuite, les caractères '^ M' ont tous disparu. –

0

Je voudrais souligner que si vous utilisez VIM plein soufflé (au moins sur ma boîte ubuntu 9.10) il « faire es ce que vous voulez "et le cache automatiquement, mais le stock vi (et vim-tiny) ne cache PAS automatiquement le^M. Si vous faites une installation minimale (ou installation du serveur), vous obtenez seulement vi et vim-tiny. Le correctif que j'ai trouvé était d'installer vim approprié (apt-get install vim) sur ma boîte ubuntu. J'espère que cela aide quelqu'un qui vient sur ce sujet pour la même raison que je l'ai fait :-D

6

Bien que convoquer sur le format DOS ou Unix une fois pour toutes est bien sûr l'approche préférable, parfois certains collègues ne le font pas se soucient suffisamment de la gestion correcte des sources pour que leurs éditeurs se comportent correctement. Dans ces cas désespérés, au lieu de convertir complètement le fichier (résultant en un fichier complètement réécrit par vous-même selon le SCM, rendant la fonction "blame" inutile), j'ai trouvé préférable de prétendre que le problème ne se produisait pas. t existe. Si le compilateur est accommodante, et PHP par tous les moyens est, vous pouvez avoir un fichier mixte EOL air parfaitement cool avec la commande suivante:

:match Invisible /\r$/ 

Ou dans les versions les plus récentes de VIM 7.4+

:match Ignore /\r$/ 

Pour aggraver les choses, la plupart des éditeurs GUI ne terminent pas un fichier texte avec une nouvelle ligne, et quand un fichier se termine par un retour à la ligne, ils affichent une ligne vide en bas.Puisque c'est un peu ennuyeux, la plupart des gens vont supprimer cette ligne vide, ce qui se traduira par un fichier mixte EOL (et le redoutable^Ms montré dans Vim) si le format de fichier était DOS.

Si quelqu'un sait comment faire Eclipse ou NetBeans honorer la fin newline sans montrer la dernière ligne vide (comme le fait intelligemment Vim), s'il vous plaît parts vos connaissances et vous ferez un codeur heureux ici. ;-)

+0

Je reçois "E28: Aucun nom de groupe de surbrillance: Invisible" quand j'ai essayé ceci sur gvim 7.4 sous Windows? Y a-t-il autre chose que je dois faire en premier? – monojohnny

+0

Intéressant, je n'utilise pas cette astuce depuis un moment (à cause du nouveau travail et des collègues plus prudents), et maintenant que je l'essaie sur OSX avec Vim 7.4 je reçois la même erreur. Je suppose que la définition de 'Invisible' a disparu des fichiers de syntaxe de la distribution, donc nous pourrions devoir la ré-implémenter dans notre propre' .vimrc'. Malheureusement, je n'ai aucune idée de la façon dont il a été codé à l'origine. – wiz

+0

Je pense que la nouvelle syntaxe est ': match Ignore/\ r $ /' –