开发者

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:

  1. delete the character with: x
  2. undo my change with: u
  3. 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" " "
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜