vi

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

 

 

vim使用技巧: 替换的巧妙使用(1)已经介绍了在vim中替换功能的巧妙运用。本文再介绍两个小技巧。

这两个技巧是近期看到的,记录下来,以免忘记。

[技巧一]

第一个是在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版看到的(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)

 

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

[参考文档]

1. VIM邮件列表,2007/03/23 邮件标题:Count characters

2. 水木社区,2007/04/09,文章标题:[求救]如何选择一个数字,然后将它转换成十六进制

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值