Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3462577
  • 博文数量: 1450
  • 博客积分: 11163
  • 博客等级: 上将
  • 技术积分: 11101
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-25 14:40
文章分类

全部博文(1450)

文章存档

2017年(5)

2014年(2)

2013年(3)

2012年(35)

2011年(39)

2010年(88)

2009年(395)

2008年(382)

2007年(241)

2006年(246)

2005年(14)

分类: LINUX

2011-12-09 14:13:39

转自:http://easwy.com/blog/archives/vim-tips-advanced-substitute-4/

[技巧一]

第一个是在VIM邮件列表中看到的,给出了一个如何统计文章字数的方法。

统计一个完整文件的字数,可以使用Unix下的wc工具,它能够统计一个文件的行数、单词数和字符数。

如果只想统计一个特定的模式出现的次数,wc工具就无能为力了,这时候可以用VIM的替换功能。

假定想统计文章中出现的单词的数目,可以使用下面的命令:

:%s/\w//gn

简单解释一下,这种命令实际上是报告整个文件中出现的单词的数目,命令分解如下:

%s            在整个文件中替换 (:help :s )
\w           匹配一个字 (word) (:help /\w )
g           替换行内所有出现的匹配 (:help :s_flags)
          只报告匹配的数目,并不真正进行替换(:help :s_flags)

如果是使用LaTeX写论文的话,可以用这种方式排除LaTeX的控制字符,统计出论文中的实际字数,参考文档列出的邮件中给出了这样的一个示例。

VIM中“:help count-items”以及“:help count-bytes”,可以看到更多统计数目的方法。

 

[技巧二]

 

这个技巧是在水木社区的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)

看来,替换命令的巧妙使用可以完成很多意想不到的功能!

阅读(1149) | 评论(1) | 转发(1) |
0

上一篇:vim 字统计

下一篇:nginx 中处理 stale event

给主人留下些什么吧!~~

2012-01-20 22:08:11

上面的两个例子我都在 vim 的环境中尝试了,但很不幸都是错误的。
不过通过这篇文章我还是学习到了更多的学习 vim 的方法,