http://hi.baidu.com/xletian/blog/item/f19962061a9a506c020881dc.html

在看过 vim 的全域指令和 search 指令之後,你会不会也会想自己还有什么需求可以叫 vim 做的呢?

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

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

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

  难道 vim 就只能这样了吗?

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

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

  :%s/pattern/&/g

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

  输入只有一行的命令:

  结果就会出现在最後一行上,而且不会改变到档案本身:

vi/vim 计算搜寻关键字数量的更多相关文章

  1. Linux 磁盘管理,Linux vi/vim

    一.Linux 磁盘管理 Linux磁盘管理好坏直接关系到整个系统的性能问题. Linux磁盘管理常用三个命令为df.du和fdisk. df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 ...

  2. 你想要的sublime、webstorm、vi/vim不得不用的快捷键【简报】【实用】

     你想要的sublime.webstorm.vi/vim不得不用的快捷键[简报][实用] 话不多说,马上走起: Sublime Text: ctrl+d  alt+f3全选 ctrl+shift+’ ...

  3. -Git Linux vi/vim 命令 按键 MD

    目录 目录 Linux vi/vim 简介 vi/vim 的使用 命令模式 输入模式 底线命令模式 vi/vim 使用实例 使用 vi/vim 进入一般模式 按下 i 进入输入模式,开始编辑文字 按下 ...

  4. 想法子记忆Vi/Vim常用操作及指令

    本笔记有特殊目录,点击开启: 专有目录 在Linux系统中编辑文本总是离不开一位老帮手--Vi.而因为其诞生的年代有些久远,有些操作在现在看来可能有点"反直觉". 于是我决定写这样 ...

  5. Linux vi/vim(转载)

    Linux vi/vim 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主 ...

  6. vi/vim 的使用

    vi/vim 的使用 基本上 vi/vim 共分为三种模式,分别是一般模式.编辑模式与指令列命令模式. 这三种模式的作用分别是: 一般模式:以 vi 打开一个档案就直接进入一般模式了(这是默认的模式) ...

  7. vi/vim基本使用方法

    vi/vim 基本使用方法本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!i/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所 ...

  8. Linux vi/vim

    所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正 ...

  9. 【转载】-- vi/vim使用

    vi/vim 基本使用方法本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!i/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所 ...

随机推荐

  1. 【Burnside定理】&【Pólya定理】

    Burnside & Pólya (详细内容请参阅<组合数学>或2008年cyx的论文,这里只写一些我学习的时候理解困难的几个点,觉得我SB的请轻鄙视……如果有觉得不科学的地方欢迎 ...

  2. @JVM中对象的引用类型

    JVM中有四种引用类型:强引用.软引用.弱引用.虚引用   强引用(Stong Reference):是指在程序代码中普遍存在的,类似:Object obj = new Object()这类的引用,只 ...

  3. 【属性动画总结】Property Animation

    属性动画概述 3.0以前,android仅支持两种动画模式,tweened animation 和 frame-by-frame animation,在android3.0中又引入了一个新的动画系统: ...

  4. nginx 域名绑定 域名, nginx 域名绑定 端口

    一.nginx 域名绑定 域名 nginx绑定多个域名可又把多个域名规则写一个配置文件里,也可又分别建立多个域名配置文件,我一般为了管理方便,每个域名建一个文件,有些同类域名也可又写在一个总的配置文件 ...

  5. 在Linux上安装Chef工作站

    导读 Chef是一个IT基础设施自动化软件,它可以管理你组织中所有的服务器和网络设备.当我们想与Chef服务器.任何物理节点(服务器.网络设备等)的基础设施进行交互时,我们需要一个Chef工作站.本教 ...

  6. [Angular] Use ngx-build-plus to compile Angular Elements

    We can treat Angular Element as each standlone lib and compile each Angular element spreatly. Tool w ...

  7. PHP的CLI综合

    tip1:传入参数 使用标准的输入和输出    PHP CLI会定义三个常量,以便让在命令行提示符下与解释器进行交互操作更加容易.这些常量见表格A.表格A 常量 说明STDIN 标准的输入设备STDO ...

  8. ZH奶酪:Yii PHP sum SQL查询语句

    例子: $sql = 'SELECT SUM(o.price) as `sum` FROM `order` o WHERE o.customer_id ='.$profile->id; $ret ...

  9. JavaScript 之 回调函数的返回值给全局变量赋值问题

    jQuery 中,会遇到$.get(url,data,callback,type) 或 $.post(url,data,callback,type) 返回值给全局变量赋值的问题: 例如: <sc ...

  10. Strom优化指南

    摘要:本文主要讲了笔者使用Strom中的一些优化建议 1.使用rebalance命令动态调整并发度 Storm计算以topology为单位,topology提交到Storm集群中运行后,通过storm ...