SpaceVim
首发于SpaceVim
SpaceVim 高速实时代码检索及替换插件

SpaceVim 高速实时代码检索及替换插件

SpaceVim 中代码检索采用的是 FlyGrep 这个插件,包括了常用的工程代码检索。搜索结果实时展示。这个插件是 SpaceVim 的内置插件,当然也已分离出一个备份仓库供给其他用户使用。


Grep on the fly in SpaceVimspacevim.org图标


先上一个效果图,因为是在windows下安装,还未安装字体等,可能状态栏并不太好看,但实际效果已经可以显示。





目前已经实现的功能主要是搜索文字内容:

  1. 实时检索全工程文件
  2. 实时检索全工程文件,指定初始输入伺,适合搜光标单词或选择的词语
  3. 实时检索已载入文件,这不同于全工程搜索,只搜索vim中已打开的文件,能更准确定位
  4. 同上,支持指定输入词来检索已载入文件
  5. 指定检索目录,适合跨工程检索或检索子目录

关于特性:

  1. 支持正则表达式
  2. 支持中文检索
  3. 输入框采用的是终端那一套快捷键,懂得用户应该非常喜欢这样快捷键,可以快速编辑单行输入内容。
  4. 鼠标支持,用 Vim 其实也有鼠标党,在这个插件里面,可以用鼠标滚轮上下移动选择行,也可以用鼠标双击打开匹配位置,单击移动匹配位置

以上这些功能已经在 SpaceVim 中实现了,文中的连接是一波演示效果图。


补充:

在这篇文章发表之后新添加了一些功能,也在文章中更新下:

  1. 首先是filter模式,也就是当我们搜索一个关键词,出现了很多结果,而我们需要的结果排在很后,以至于下拉很久看不到,这时候你可以启用 filter 模式,filter 模式其实类似于 flygrep,但是,他是对前一次的结果进行筛选。默认快捷键是 flygrep 模式下按下 ctrl+f



那么说道重点了:TODO

  1. 一个比较实用的 todo,提供一个快捷键,将搜索结果转变为 quickfix 列表,这有助于对这些搜索结果进行后期处理。
  2. 另外一个 TODO 是全工程替换,或局部替换,大致思路是由flygrep 删选结果,由 Iedit 多光标编辑,再应用至文件.
一个粗略的效果图:



后期还有那些特性会去实现呢?首先当然是neovim的悬浮窗特性,在我前面的文章里面已经展示过悬浮窗的特性,那只是一个粗略的效果图, 具体细节当然还需要时间去实现。

关于代码检索,大家还有什么建议吗?欢迎留言.

NOTE:

这篇文章为持续更新,直到这个特性完全实现并合并到 SpaceVim 主仓库,希望能收集到一些实用的建议,谢谢大家。

编辑于 2018-03-14

文章被以下专栏收录

    SpaceVim 是一个模块化配置集合,包含针对各种语言开发的插件和相应的优化配置。目前支持多种语言的自动补全、语法检测、代码格式化,而且启动速度飞快。SpaceVim的另一核心理念就是按序延迟加载,目前90%的插件都是滞后加载。SpaceVim模块化的思想来源于 spacemacs的layer(模块),将各种功能包装好封装成一个layer,用户根据自己的需要载入相应的layer,实现自定义SpaceVim。

    写一些从想法到脚本实现的详细过程,我希望更多的用户可以自己写脚本