红联Linux门户
Linux帮助

vim小技巧: 计算有多少个搜寻关键字

发布时间:2010-05-21 10:18:25来源:红联作者:linuxcui
在看过 vim 的全域指令和 search 指令之後,你会不会也会想自己还有什麽需求可以叫 vim 做的呢?

  今天我和布丁长辈还有DK长辈聊天的时候就讲到一个问题:我可不可以知道到底这份文件有多少个我想要搜寻的字串?

  当然啦,你如果会 vim 的全域指令你可能可以用 :g/pattern/p 之後,用 copy 的方式或是其他指令的组合把比对出来的东西存到另外一个档案去,然後再用其他的工具(像是wc)计算行数。不过,这个方法,不够方便。

  比较辛苦一点的方式也可以用 /pattern 然後自己按 n 一个个算,不过… 我想可能会先算到疯掉。

  难道 vim 就只能这样了吗?

  忘了是DK长辈还是布丁长辈说可以写程式来算。不过 vim 的 script 写法,我打算到後面再写。我心里想的是,应该有一行就可以解决的方法啊!

  在 vim 里面遇到问题的时候有两个方式,第一个就是 :h 然後後面跟上你猜可能会有答案的关键字。不过这个方式我今天用了好几次,感觉除了写程式别无他途。可是,我就是不想写程式。第二个方法就是到 www.vim.org 上找 tips 看,结果没两下就找到了这篇,後面的 comment 中有个人只用一行解决,看了就觉得「哎唷,怎麽就是没想到呢?」其实用 vim 编辑文件想这些怎麽样可以让自己少打点或是只用一行指令解决的过程是很有趣的。这个人用的方法很简单也很漂亮,但却要用到我们之前提过的取代指令 :s :

  :%s/pattern/&/g

  & 代表的意思就是用来表示前面比对的字串,所以做这个指令其实对档案本身并不会有什麽改变。但是由於做的是全域的取代置换, vim 会告诉你有从多少行中多少个字串被取代。轻轻松松很漂亮地用一行命令解决这个问题。

  原文地址 http://greenisland.csie.nctu.edu.tw/wp/2005/09/08/327/
文章评论

共有 5 条评论

  1. 求知路漫漫 于 2010-06-02 09:58:07发表:

    {:2_91:}

  2. cz3b 于 2010-05-27 21:42:02发表:

    很帅,很拉风~

  3. 绿色圣光 于 2010-05-21 19:46:34发表:

    如此强大!俺落后了……

  4. shenhao0129 于 2010-05-21 12:40:06发表:

    果然是老外是这方面的高手

  5. QVB1986 于 2010-05-21 11:07:16发表:

    受教