当前位置: 首页 > 工具软件 > rust.vim > 使用案例 >

Vim插件之ack.vim

华永逸
2023-12-01

纯粹个人记录备份而已,如有错误,欢迎指正,更新于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

 类似资料: