之前有朋友问过我,Vim(gvim)中怎么实现多文件的查找和替换呢?当时确实一直没有考虑过这个问题,因为一直在linux下都有grep,sed这样强力的工具,并不需要vim来实现这样的操作,但是也有很多朋友在windows下也使用gvim来进行编辑,那么就很有必要研究一番了。

第一,多文件查找

vimgrep是vim自带的一个工具,类似于grep的用法就可以实现。比如要在当前目录查找word,使用如下:

如果想要递归查找所有下级目录里面,那么就用

另外,如果想要在使用是快捷查找当前光标下的字母,则只需要在vimrc中添加如下代码:

通过vimgrep查找到的结果会生成到quickfix中,如下图:

第二,多文件替换

实际上只要如下两个命令即可(假设要将当前目录下所有扩展名为.txt/.cpp的文件中的hate替换成love):

就可以完成啦。解释如下,

这样写会扫描当前目录下的.txt 和 .cpp文件,并加入到参数列表。但是这样写只会稻苗当前目录,如果想要递归扫描所有下级目录的话,用

如果只想扫描下一级目录(即不扫描当前目录)的话,用

是将参数列表中的所有文件的hate提换成love,并写入硬盘(如果没有|update,就不会写入,但相应的替换也会被中断)。

最后强调一点,使用替换命令的时候,一定记得备份,因为替换是直接写入硬盘滴哦……

好啦,希望这篇文章对大家有用~

Vim(gVim)对排序的妙用

前段时间有博友在群里问了一个关于vim排序的问题,因为时间问题一直没帮忙解决,今天时间正好空出来,就帮忙搞了一下。 原文的问题如下: ...

阅读全文

vim(gVim)统计字节、字符数

前段时间在做文件扫描的时候,有一些关于字节、字符数统计的需求,考虑到有同学也可能用的到,所以整理一下记录在这里。 1.统计当前字符之前的所有字节数 ...

阅读全文

糗事百科网站改版,对应qiushibaike.vim插件升级

前不久糗百改版,所以原有的qiushibaike.vim插件用起来会有一些问题,今天有时间就修改了一下. 如图: 下载地址: http://www.vim.org/scripts/script.php?scr...

阅读全文

14则回应给“Vim(gvim)实现多文件的查找和替换”

  1. sherrier说道:

    查找当前光标下的字母还可以这样做:
    :vim/\<\>/
    就是复制当前光标下的单词到命令行

    [回复]

  2. sherrier说道:

    哦显示不出来,应该是
    :vim/\/
    “CTR+R CTR+W”(包括“)要换成VIM的标准写法

    [回复]

  3. sherrier说道:

    我哭了:(
    反正“CTR+R CTR+W”可以直接复制当前光标下的单词到命令行

    [回复]

    Dante 回复:

    哈哈,试了一下,果然可以呀~~~ CTRL+R CTRL+W,这个组合我之前还真的不知道呢~~~受教啦~~·

    [回复]

  4. zhanglistar说道:

    ctrl + r ctrl +w

    [回复]

  5. kadyz说道:

    请问vimgrep查找时能否指定查找某路径下的文件呢?

    [回复]

    Dante 回复:

    是可以的
    :h vimgrep
    可以看这个命令的使用方法

    [回复]

  6. kadyz说道:

    另外想问个问题,上面图中的vim窗口时如何精简成这样的?我想保留菜单栏,不显示工具栏,要如何实现呢?

    [回复]

    Dante 回复:

    可以没有菜单和工具栏,详细可参照:

    [回复]

  7. watan说道:

    请教一个问题,使用vimgrep搜索之后,得到quickfix窗口,每次点击都会出现一个子窗口,即便是点击同一条搜索结果,这样多次点击之后,一个窗口会被split成N多个窗口,很麻烦;
    有没有什么设置,能使得不管点击多少次,都只有一个子窗口显示详细结果,另外一个是quickfix窗口呢?

    [回复]

  8. hilojack说道:

    我想问,替换时不能弹出Y/N吗?
    “一定记得备份,因为替换是直接写入硬盘滴哦……”
    备份真的很麻烦滴

    [回复]

  9. […] [1]Vim(gvim)实现多文件的查找和替换 […]

  10. cddwx说道:

    小标题重复了

    [回复]

    朱念洋 回复:

    谢谢,已修改

    [回复]

发表评论