众所周知,使用JS的正则对中文进行验证时,可以使用:
/[\u4e00-\u9fa5]+/.test(‘中文‘)
但是在VIM中再使用这个正则时,则会提示无法找到匹配项
E384: 已查找到文件开头(结尾)仍找不到[\u4e00-\u9fa5]+
实际上,VIM的在进行搜索时,有一个‘magic‘设置,当magic设置为不同的情况时(默认的设置是magic),正则表达式的写法是不同的:
- magic: 除了`^.*$`之外所有的字符都需要加反斜杠
- nomagic: 除了`^$`之外所有的字符都需要加反斜杠
- very magic: 任何字符都不需要加反斜杠
- very nomagic: 任何字体都需要加反斜杠
可以在正则表达式中指定使用哪种magic
- \m: magic
- \M: nomagic
- \v: very magic
- \V: very nomagic
例如:
\v[\u4e00-\u9fa5]+ " 查找中文
所以之前的问题出在哪里也就一目了然了:
[\u4e00-\u9fa5]\+ " 默认为magic, `+`需要加反斜杠
对于多字节文字,VIM除了`\u`之外,还可以使用如`\U1234`表示小于`0xffffffff`的文字。
VIM中使用正则匹配中文
原文:http://my.oschina.net/hotleave/blog/341500