2009-10-05 133 views
1

我有一些带有一些重音符号的文件,VIM将它们显示为“〜V”字符。 “od -bc”命令告诉我字符是charcode 226.我想用VIM替换它们。但我无法让它符合人物。我怎样才能做到这一点?vim和无法识别的字符

可选问题:我如何让VIM告诉我哪个字符集用于解释当前文件?

回答

2

您可以使用以下格式,从Vim的于模式和正则表达式手册:

ordinary atom 
magic nomagic matches 
\%d \%d match specified decimal character (eg \%d123 
\%x \%x match specified hex character (eg \%x2a) 
\%o \%o match specified octal character (eg \%o040) 
\%u \%u match specified multibyte character (eg \%u20ac) 
\%U \%U match specified large multibyte character (eg \%U12345678) 

所以,你应该能够做这样的事情用一个空格全球替换文件中的字符226:

:%s/\%d226/ /g 

至于后者,如果你这样做:

:set encoding 

你会看到Ø本安输出,如:

encoding=latin1 
+0

不幸的是,当我尝试时,VIM输出“E71:\%后面的无效字符”。 – Alsciende 2009-10-05 12:01:27

+0

我得到E486:找不到模式(我期望)。但是,如果我省略'd'(即,我只是做s/\%226 /),我确实得到了E71。你究竟在尝试什么命令? – 2009-10-05 12:17:15

+0

我输入了:%s/\%d226 /é/ g – Alsciende 2009-10-05 13:03:38

1

一个非常简单的方法来应对这种 “怪异” 的人物是:

  1. 选择有问题的字符(一个或多个)视觉(V)
  2. 猛拉它缓冲
  3. 将其替换为::%s/<ctrl-r>"/something-else/g

其中<ctrl-r>时按住Ctrl键字母r - 连同“吧将缓冲区复制到命令行 - 有效地将您的违规字符放入s///操作中。