Come faccio a sostituire o trovare i caratteri non stampabili in regex vim?
-
27-09-2019 - |
Domanda
Ho un file con alcuni caratteri non stampabili che si presentano come ^ C ^ o B, voglio trovare e sostituire quei personaggi, come posso fare per farlo?
Soluzione
dire che si desidera sostituire ^ C con C:
:%s/CtrlVC/C/g
Dove Ctrl V C mezzi di tipo V allora C tenendo Ctrl premuto.
Ctrl V consente di immettere i caratteri di controllo.
Altri suggerimenti
La rimozione solo simboli di controllo:
:%s/[[:cntrl:]]//g
La rimozione caratteri non stampabili (si noti che nelle versioni precedenti alla 8.1.1 ~ Questo rimuove caratteri non-ASCII anche):
:%s/[^[:print:]]//g
La differenza tra loro potrebbe essere visto se si dispone di alcuni caratteri non stampabile-non-controllo, per esempio larghezza zero spazio :
Prova questo dopo aver salvato il file in vim (supponendo che si sono in ambiente Linux)
:%!tr -cd '[:print:]\n'
Nessuna delle risposte qui utilizzando i caratteri di controllo del Vim lavorato per me. Ho dovuto immettere un intervallo unicode.
:%s/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]//g
Questa gamma Unicode è stato trovato su questo altro post: https://stackoverflow.com/a/8171868/231914
È possibile utilizzare:
:%s/^C//g
Per ottenere ^C
Tenere premuto il tasto di controllo, premere V
quindi C
(Sia tenendo premuto il tasto di controllo) e apparirà la ^C
. Questo troverà tutte le ricorrenze e sostituirli con nulla.
Per rimuovere sia ^C
e ^B
si può fare:
:%s/^C\|^B//g