2010-10-02 6 views

Répondre

27

que vous voulez remplacer^C avec C:

:%s/CtrlVC/C/g

CtrlVC signifie le type V puis C tout en maintenant les touches Ctrl enfoncée.

CtrlV vous permet de saisir des caractères de contrôle.

+3

Vous pouvez également utiliser Ctrl-Q. Ceci est utile pour certains utilisateurs qui mappent Ctrl-V aux opérations de presse-papiers –

5

Vous pouvez utiliser:

:%s/^C//g 

Pour obtenir le ^C maintenez la touche de commande, appuyez sur V puis C (deux en maintenant la touche de commande) et le ^C apparaîtra. Cela trouvera toutes les occurrences et les remplacera par rien.

Pour retirer les deux ^C et ^B que vous pouvez faire:

:%s/^C\|^B//g 
5

Vous pouvez utiliser le préfixe CTRL-V pour les saisir, ou s'ils ne sont pas facilement typable, coup sec et insérez-les à l'aide CTRL-R".

8

Essayez ceci après avoir sauvegardé votre fichier dans vim (en supposant que vous êtes dans un environnement Linux)

:%!tr -cd '[:print:]\n' 
+6

s'il vous plaît expliquer ce jour en économisant le vaudou magique! – Prospero

+3

@JamesAndino: ':%' filtre toutes les lignes en utilisant le programme externe '' '' '' '' '' '', qui supprime _ ('-d') tous les caractères qui sont _not_ (' -c') _printable_ ('[: print: ] ') ou _newline_ (' \ n'). – quasimodo

+2

Ce n'est pas convivial Unicode, car il s'agit d'une classe de caractères POSIX (http://en.wikipedia.org/wiki/Regular_expression#Character_classes). Donc, si vous avez YAML avec des données comme 你好, 'tr' supprimera les données Unicode en utilisant' [: print:] '. – ash

51

Suppression des symboles de contrôle seulement:

:%s/[[:cntrl:]]//g 

Suppression de caractères non-imprimables (supprime les caractères non-ASCII aussi):

:%s/[^[:print:]]//g 
+0

Au moins jusqu'à ce que vim 7.3 [: print:] ne corresponde qu'aux caractères imprimables ASCII (éditez la réponse pour alerter les lecteurs à ce sujet) – ndemou

+0

@ndemou Ceci est difficile, avec le []: [] le^devrait inverser le correspondre et retourner tout non-imprimable. Ou peut-être que c'était votre montage? – dragon788

+0

@ dragon788, oui j'étais conscient de la façon dont cela fonctionne quand j'ai écrit mon commentaire. Essayez le 2ème regex sur le texte avec des caractères Unicode imprimables en dehors de la table ASCII pour comprendre mon commentaire (il enlèvera les caractères Unicode). – ndemou

4

Aucune des réponses ici en utilisant les caractères de contrôle de Vim n'a fonctionné pour moi. Je devais entrer dans une gamme Unicode.

:%s/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]//g 

Cette gamme unicode a été trouvé sur cet autre message: https://stackoverflow.com/a/8171868/231914

+0

Parce que TAB est considéré comme non-imprimable, donc ces [[: cntrl:]] et [^ [: print:]] correspondent à TAB (0x9, C-I) – mosh

Questions connexes