How to search and replace an unprintable character
I've a file that was exported from Word and it replaced all quotes with strange unicode characters which aren't correctly di开发者_如何学Csplayed in vim. So now I want those characters to be replaced with quotes, but I don't know how to enter this character in
:%s/???/'/g
The characters look like this: ~U ~R. But of course I can't just mark them with mouse and paste in the command.
You can try setting the encoding type and see if it fixes the visalizations of those characters:
:set encoding=utf-8
then you can use them directly. Alternatively, you can place your cursor on the unprintable character and hit ga
, it will show the decimal/hex/octal code of that character, then you can substitute it with:
:%s/\%xYY/substitute/g
where YY
is the hex code of the char, if it's multibyte:
:%s/\%uYYYY/substitute/g
for details:
:help character-classes
Note that you can search and match with \%xff
or \%uabcd
but will be unable to substitute with it.
I usually:
- delete the character with:
x
- undo my change with:
u
- do the substitute thanks to c_CTRL-R:
:%s/^R"/'/g
you can also filter it by using the tr command
for example replacing the hex a0 which stems from MacOs cut-and-paste can be replaced with a whitespace as follows (\240 being the octal representation of hex a0)
:.,$!tr "\240" " "
精彩评论