J'ai un fichier avec des caractères non imprimables qui apparaissent comme ^ C ou ^ B, je veux trouver et remplacer ces caractères, comment dois-je procéder?
Supposons que vous souhaitiez remplacer ^ C par C:
:%s/CtrlVC/C/g
Où CtrlVC signifie type V puis C tout en maintenant Ctrl pressé.
CtrlV vous permet de saisir des caractères de contrôle.
Suppression des symboles de contrôle uniquement:
:%s/[[:cntrl:]]//g
Suppression de caractères non imprimables (notez que dans les versions antérieures à ~ 8.1.1, cela supprime également les caractères non ASCII):
:%s/[^[:print:]]//g
La différence entre eux pourrait être vue si vous avez des caractères non imprimables et non contrôlables, par exemple espace de largeur nulle :
Essayez ceci après avoir enregistré votre fichier dans vim (en supposant que vous êtes dans un environnement Linux)
:%!tr -cd '[:print:]\n'
Aucune des réponses ici utilisant les caractères de contrôle de Vim n'a fonctionné pour moi. J'ai dû entrer dans une plage unicode.
:%s/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]//g
Cette plage unicode a été trouvée sur cet autre article: https://stackoverflow.com/a/8171868/231914
Vous pouvez utiliser:
:%s/^C//g
Pour obtenir le ^C
maintenez la touche de contrôle, appuyez sur V
puis C
(les deux en maintenant la touche de contrôle) et ^C
apparaîtra. Cela trouvera toutes les occurrences et les remplacera par rien.
Pour supprimer les deux ^C
et ^B
tu peux faire:
:%s/^C\|^B//g