SpaceVim

一个模块化的 Vim/Neovim 配置集合


主页 | 关于我们 | 入门指南 | 使用文档 | 开发指南 | 用户社区 | 赞助 | English


Blogs » Vim 异步实时代码检索

31 Jan 2018

FlyGrep 指的是 grep on the fly,将根据用户输入实时展示搜索结果。当然,这些搜索命令都是异步执行的。 在使用这一功能之前,需要安装一个命令行搜索工具。目前 FlyGrep 支持的工具包括:agrgackptgrep, 选择你喜欢的工具安装即可。

这是一个 SpaceVim 内置插件,当然也自动剥离出一个独立的插件供非 SpaceVim 用户使用:FlyGrep.vim

安装

在 Linux 系统下,flygrep 默认使用 grep,如果需要使用更快的工具,可以安装以下某一个工具:

功能特性

在 SpaceVim 中,可以使用快捷键 SPC s p 或者 SPC s / 进行全工程检索。

searching project

同时,可以使用快捷键 SPC s s 仅搜索当前文件中的内容,如果需要在当前文件中搜索光标下的词,可以使用快捷键 SPC s S

searching current file

如果需要在所有已经打开的文件中搜索,可以使用快捷键 SPC s b,如果需要在所有已打开的文件中搜索光标下的词语, 则可以使用快捷键 SPC s B

searching-loaded-buffer

如果需要指定一个文件夹来搜索,可以使用快捷键 SPC s f,然后输入需要搜索的文件夹即可。同理, 如果需要在指定文件夹下搜索光标下的词语,可以使用快捷键 SPC s F

首先,需要启用 incsearch 模块:

[[layers]]
    name = 'incsearch'

全工程后台检索,可以使用快捷键 SPC s j,搜索结束后,数量会展示在状态栏上。可以使用 SPC s l 打开搜索列表。

快捷键

SpaceVim 中的搜索命令以 SPC s 为前缀,前一个键是使用的工具,后一个键是范围。 例如 SPC s a b将使用 ag在当前所有已经打开的缓冲区中进行搜索。

如果最后一个键(决定范围)是大写字母,那么就会对当前光标下的单词进行搜索。 举个例子 SPC s a B 将会搜索当前光标下的单词。

如果工具键被省略了,那么会用默认的搜索工具进行搜索。默认的搜索工具对应在 g:spacevim_search_tools 列表中的第一个工具。列表中的工具默认的顺序为:rg, ag, pt, ack, grep。 举个例子:如果 rgag 没有在系统中找到,那么 SPC s b 会使用 pt 进行搜索。

下表是全部的工具键:

工具
ag a
grep g
ack k
rg r
pt t

应当避免的范围和对应按键为:

范围
打开的缓冲区 b
给定目录的文件 f
当前工程 p

在 FlyGrep 内的快捷键如下:

快捷键 功能描述
<Esc> 关闭搜索窗口
<Enter> 打开当前选中的文件位置
Ctrl-t 在新标签栏打开选中项
Ctrl-s 在分屏打开选中项
Ctrl-v 在垂直分屏打开选中项
Ctrl-q 将搜索结果转移至 quickfix
<Tab> 选中下一行文件位置
Shift-<Tab> 选中上一行文件位置
<Backspace> 删除上一个输入字符
Ctrl-w 删除光标前的单词
Ctrl-u 删除光标前所有内容
Ctrl-k 删除光标后所有内容
Ctrl-a / <Home> 将光标移至行首
Ctrl-e / <End> 将光标移至行尾

由Jekyll强力驱动