Eric's Blog 时光荏苒,岁月如梭

介绍我的新插件 gfr.vim

2023-05-07
Eric Wong

今天向大家分享一个我刚写的 Vim 插件 gfr.vim。名字取自三个词语缩写:Grep, Filter, Replace。顾名思义,这个插件提供的功能包括文本搜索、结果筛选以及文本替换功能。

为什么要开发 gfr.vim

Vim 文本搜索的插件已经非常多了,我自己也使用过很多种插件。比如:ack.vimag.vimgrepper.vim 等等。这些插件都提供了类似的功能,即为搜索制定的文字,并将结果输出到 Vim 的 quickfix window。 甚至,我之前还制作过一款实时异步搜索,并展示搜索结果的插件 flygrep.vim。

但是以上这些插件仅仅支持搜索指定文本的结果,不具备二次检索和替换的功能。

gfr.vim 的功能特点

异步执行

这个插件中,我比较常用的命令是 :Grep。实际上,Vim 本身也有 :grep:vimgrep 命令,功能是相同的,都是执行搜索命令,并且把搜索的结果展示在 quickfix 窗口内。 但是 Vim 自带的 :grep:vimgrep 命令是单线程的,如果搜索的文件夹内内容非常多会卡住当前 Vim 的操作界面,体验不是很好。

兼容 Vim/Neovim

Vim 和 Neovim 的一些内置函数还是有些差异的,而 gfr.vim 集成了 SpaceVim 的 API,可以同时兼容 Vim 和 Neovim。

弹窗消息界面

gfr.vim 使用了 SpaceVim 的 notify API,对于一些插件通知消息,在 Vim 右上方使用浮窗提示。

如何安装

和其他常用插件一样,你可以使用任意一个插件管理器来安装,比如使用 plug.vim:

Plug 'wsdjeg/gfr.vim'

在插件列表添加上面这段即可,启动 Vim 后执行 :PlugInstall

如何使用

gfr.vim 提供了如下命令:

  1. :Grep: 搜索指定的文本,该命令后面的参数即为需要搜索的文本,比如 :Grep hello 指的就是搜索 hello。如果直接调用:Grep,并且不带任何参数,那么会弹出一个输入框,可供输入需要搜索的文本。
  2. :Filter:检索上一次搜索的结果,可以理解为二次筛选。对于上一次搜索或者检索的结果,进行再一次的筛选。
  3. :GrepSave:将当前的搜索结果保存至命名标签,以便于快速访问。
  4. :GrepResum:使用:GrepResum 标签名可以快速打开以往的搜索结果
  5. :Replace:对搜索到的结果执行文本替换

后续计划

目前,这个插件只支持 grep 命令,后续计划增加 agrg 等命令支持。


延生阅读

分享到:

评论

目前只支持使用邮件参与评论。