纯粹个人记录备份而已,如有错误,欢迎指正,更新于2018/5/13
已经改用ripgrep配合ack
进行搜索,ripgrep是用Rust
写的新一代搜索引擎,号称是现在最快的搜索引擎,在ack中调用ripgrp进行搜索的方法如下
"调用rg进行搜索
if executable('rg')
let g:ackprg = 'rg --vimgrep'
endif
在debian
安装ripgrep的方法如下
$ curl -LO https://github.com/BurntSushi/ripgrep/releases/download/0.8.1/ripgrep_0.8.1_amd64.deb
$ sudo dpkg -i ripgrep_0.8.1_amd64.deb
在Windows下不需要安装,只需要在ripgrep项目的release页面下载windows-msvc版本的压缩包,解压后将其放到Vim的安装目录下即可,比如C:\Program Files (x86)\Vim\vim80
目录,其他配置与之前相同不需要更改
以下为原文
与ctrlp一样,ack.vim也是Vim上的一个搜索工具,主要用于项目内搜索,比如搜索某个函数之类的非常方便,github上也有一个基于ack的代码搜索项目vim-codequery,但依赖较多。在ack之上,还有一个基于The Silver Searcher
的fork版本ag.vim,速度比ack更快,但功能不如ack丰富,16年的时候已经deprecated了(同样基于The Silver Searcher
的还有vim-ags),而且ack也允许调用ag进行搜索,因此更推荐用ack,要使用ag必须先在系统中安装The Silver Searcher
,在Debian上只需执行
$ sudo aptitude install ack silversearcher-ag
下面是我的配置
"ack
"<Leader>c进行搜索,同时不自动打开第一个匹配的文件"
map <Leader>c :Ack!<Space>
"调用ag进行搜索
if executable('ag')
let g:ackprg = 'ag --vimgrep'
endif
"高亮搜索关键词
let g:ackhighlight = 1
"修改快速预览窗口高度为15
let g:ack_qhandler = "botright copen 15"
"在QuickFix窗口使用快捷键以后,自动关闭QuickFix窗口
let g:ack_autoclose = 1
"使用ack的空白搜索,即不添加任何参数时对光标下的单词进行搜索,默认值为1,表示开启,置0以后使用空白搜索将返回错误信息
let g:ack_use_cword_for_empty_search = 1
"部分功能受限,但对于大项目搜索速度较慢时可以尝试开启
"let g:ack_use_dispatch = 1
在上面的配置中,如果你想自动打开第一个匹配的文件可以修改为
map <Leader>c :Ack<Space>
如果你想要配置ack搜索参数的话,可以使用g:ack_default_options
进行定制,默认参数是 ” -s -H –nocolor –nogroup –column”,因此你要让搜索结果区分大小写的话,可以设置成下面这样
let g:ack_default_options = " -s -H --nocolor --nogroup --column --smart-case"
但是由于上面是调用ag进行搜索,g:ack_default_options
失效,要定制搜索参数必须写到g:ackprg
中,同样以添加--smart-case
为例
let g:ack_prg = "ag --vimgrep --smart-case"
下面是QuickFix窗口下的一些快捷键
按键 | 功能 |
---|---|
? | 显示键盘映射 |
o | 打开文件 |
O | 打开文件关闭QuickFix窗口 |
go | 预览文件,但焦点留在ack搜索结果上 |
t | 在新标签页打开文件 |
T | 在新标签页打开但不切换到那个标签页 |
h | 分屏打开 |
H | 分屏打开,但焦点停留在ack搜索结果上 |
v | 竖直分屏打开 |
gv | 竖直分屏打开,但焦点停留在ack搜索结果上 |
q | 关闭QuickFix窗口 |
另外ack也支持文件搜索,使用:AckFile
即可,不过我一般是用ctrlp搭配ag搜索文件的,具体实现看Vim插件之ctrlp
如果需要在Windows下使用ack.vim,同样需要有ack或者ag的支持,在Windows下安装它们可以使用Chocolatey,安装方法如下:首先以管理员权限打开cmd窗口,然后运行下列命令
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
安装完成以后,就可以继续安装ack或者ag了,在cmd窗口中执行下列命令(建议先关闭原先的cmd窗口,再重新打开一个cmd窗口进行安装)
choco install ack
安装ack的过程中需要下载Strawberry,过程会慢一点,请耐心等待,ag的安装方法类似。另外需要注意的一点是,对于Win7由于默认的PowerShell版本是2.0,而Chocolatey需要3.0以上的版本,因此对于Win7还需要先更新PowerShell,具体方法可以参考如何升级PowerShell