vim替换技巧4

php

转自:http://www.confay.com/2008/03/vim4.htmlhtml

[技巧一]
第一个是在VIM邮件列表中看到的,给出了一个如何统计文章字数的方法。
统计一个完整文件的字数,能够使用Unix下的wc工具,它可以统计一个文件的行数、单词数和字符数。
若是只想统计一个特定的模式出现的次数,wc工具就无能为力了,这时候能够用VIM替换功能。
假定想统计文章中出现的单词的数目,能够使用下面的命令:
:%s/\w//gn
简单解释一下,这种命令其实是报告整个文件中出现的单词的数目,命令分解以下:
%s 在整个文件中替换 (:help :s )
\w 匹配一个字 (word) (:help /\w )
g 替换行内全部出现的匹配 (:help :s_flags)
n 只报告匹配的数目,并不真正进行替换(:help :s_flags)
若是是使用LaTeX写论文的话,能够用这种方式排除LaTeX的控制字符,统计出论文中的实际字数,参考文档列出的邮件中给出了这样的一个示例。
VIM中“:help count-items”以及“:help count-bytes”,能够看到更多统计数目的方法。

[技巧二]
这个技巧是在水木社区的VIM版看到的(http://www.newsmth.org/bbsdoc.php?board=VIM )。
这个文章是关于如何将一串十进制数字转换为16进制数字,使用VIM完成转换的最简单方法以下:
:%s/\d\+/\=printf("%X", submatch(0))/g
这条命令的原理是,把一串数字,用printf()函数的输出替换掉,printf()函数输出的正是这串数字的16进制形式。
分解以下:
%s 在整个文件中替换 (:help :s )
\d\+ 匹配一个或多个数字 (:help /\d :help /\+ )
\= 使用表达式的结果进行替换 (:help /\w )
printf 按指定格式输出 (:help printf() )
submatch() 返回:s命令中的指定匹配字符串 (:help submatch() )
g 替换行内全部出现的匹配 (:help :s_flags)vim

相关文章
相关标签/搜索