当我们使用vim看源码的时候,我们可能会碰到一个方法或者变量,我们想要知道这个变量在其他地方的使用情况。这时候我们经常的做法就是退出当前的文件,或
者是重新切换一个终端,然后使用grep或者find等shell命令进行搜索。其实,我们完全可以在不离开文件的情况下,在vim的命令行中进行搜索。

vim内部搜索有两种方式,一直就是调用外部的搜索工具进行搜索grep。另外一种就是自带的内部搜索vimgrep
其中,grep允许我们就行设置,从而可以自主选择我们希望使用的搜索工具以及搜索结果样式。例如

我们可以通过在vimrc中添加如下内容,来把ack作为grep默认的搜索工具

set grepprg=ack\ --nogroup\ $*

当然,你不要忘了配置ack的链接,如下

sudo ln -s /usr/bin/ack-grep /usr/local/bin/ack

我们可以通过如下方法设置搜索结果样式

set grepformat=%f:%l:%c:%m
%f:文件名
%l:行号
%c:列号
%m:匹配行的文本

除了上述的外部搜索命令,vim还支持内部搜索命令,vimgrep。它其实就跟grep差不多。

这些搜索命令,我们使用以后,主要的就是生成一个搜索列表,这个搜索列表会保存在quickfix中,我们只要调出这个窗口,我们就可以很方便的查看搜索结果并>能跳转到搜索结果了。

vim基础学习之搜索功能的更多相关文章

  1. vim基础学习之自动补全功能

    本章我们学习自动补全功能1.自动补全优先从当前的编辑区获得补全列表例如:我们写下如下内容 aaaaa aabbb aaab 当我们再次输入aa,然后我们按下Tab的时候,会弹出一个包含 aaaaa a ...

  2. vim 基础学习之查找

    普通模式下 /->正向查找 n-向下查找 N-向上查找 ?->反向查找 N-向下查找 n-向上查找 <C-r><C-w> <C-r>-引用,例如引用寄存 ...

  3. vim 基础学习之替换

    替换命令substitute可以用来查找跟替换操作. :[range]s[ubstitute]/{pattern}/{string}/[flags] [count] range-命令作用范围(缺省的情 ...

  4. vim 基础学习之global

    global命令可以在指定模式下,匹配行上进行Ex命令 使用格式: :[range]g[lobal]/{pattern}/[cmd] range-是执行范围(如果缺省,是%) global-命令关键字 ...

  5. vim 基础学习之文件跳转

    1. ''-当前文件上次跳转之前的位置2. '.-当前文件上次修改的位置,只要是发生了可能导致变化的命令操作就会被标记,哪怕实际结果没有变化3. '^-当前文件上次插入的位置,只要是发生了插入操作命令 ...

  6. vim 基础学习之重复

    重复命令 .: 这个命令可以重复之前的操作.例如你执行了dd操作,然后. 就会删除当前行还有从进入插入模式到退出插入模式,之间的修改也算是一次操作.比如,你执行了i aaa <Esc>然后 ...

  7. vim基础学习1---简单命令

    1:vim abc:如果有abc文件,则打开,否则创建之后打开 2:输入"i",才可以输入东西 3:按Esc,它是底行模式,再敲":wq 回车" 保存退出. 4 ...

  8. vim基础学习之EX命令

    :tabnew -创建新标签 :split(sp)-垂直分割窗口 如果没有打开新的文件,那么会打开原来窗口的文件 :vsplit(vsp)-水平分割窗口 如果没有打开新的文件,那么会打开原来窗口的文件 ...

  9. vim 基础学习之可视模式

    1. 选择模式这个模式必须通过可视模式进入.在可视模式下,我们通过 <C-g>来把我们的可视选中块作为选择模式下的操作块. 这时候我们输入可见字符,就会把这个块给覆盖掉.例如aaa bbb ...

随机推荐

  1. MySql-Error: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

    MySql-Error: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 标签( ...

  2. php八大设计模式之桥接模式

    一个抽象产生多种具体的实现方式,单纯的通过子类继承会有子类爆炸(过多的子类产生)的现象,系统需要它们之间进行动态耦合. 面向过程: <?php header("content-type ...

  3. Perl模块利用CPAN在线安装自动化

    需要解决2个问题: 1.  如何与CPAN交互:利用perl –MCPAN –e ‘install 模块’ 2.  如何安装指定的版本:作者/模块-版本.tar.gz How to install a ...

  4. ArcGIS api for javascript——地图配置-定制导航箭头

    描述 本例展示了如何为平移地图包括自定义的按钮.地图被放置在一个宽3列和高3行的HTML表格的固定宽度中心单元.表格里剩余的单元放置标签为8个主要方向的缩写的按钮.每个按钮调用地图上不同的平移函数.例 ...

  5. spark transform系列__groupByKey

    这个操作的作用依据同样的key的全部的value存储到一个集合中的一个玩意. def groupByKey(): RDD[(K, Iterable[V])] = self.withScope {  g ...

  6. bzoj 1010 (单调决策优化)

    能够非常好的证明单调决策性质.用   记sum[i]=sigma(C[1],C[2].....C[k]);f[i]=sum[i]+i;  c=l-1; 有转移dp[i]=min( dp[j]+(f[i ...

  7. BZOJ 3940 AC自动机

    思路: 需要维护一个栈的AC自动机--. 要求出来 最后的栈顶是在自动机上的哪个节点. if(!ac.ch[st[tp-1]][a[i]-'a']) st[tp]=ac.ch[ac.f[st[tp-1 ...

  8. 清空/var/adm/wtmp 文件内容

    清/var/adm/wtmp 文件内容 用于显示登录系统和重启机器的情况 /var/adm/wtmp文件过大. 可用du -sm /var/adm/wtmp查看 cat /dev/null>/v ...

  9. 【Linux下安装配置Jupyter】

    """ 第一步 安装 """ pip3 install -i https://pypi.douban.com/simple jupyter ...

  10. Yeslab 华为安全HCIE-第七门-Agile Controlle

    课程目录:   华为安全HCIE-第七门-Agile Controller(12篇)\1_aglie_controller产品亮点讲解.avi 华为安全HCIE-第七门-Agile Controlle ...