vim插件之lookupfile

cscope+tags+lookupfile+vim 将vimrc中的目录修改成自己的目录,然后运行其他3个脚本 立即下载

本节所用命令的帮助入口:

:help lookupfile

在文章保存项目相关配置中,我们讲过通过”:find“命令打开指定的文件,不过使用”:find“命令并不是非常的方便:一是如果项目比较大、文件比较多,find查找起来很慢;二是必须输入全部的文件名,不能使用正则表达式(regex)查找。

我们也介绍过vim提供的文件浏览插件,你可以在浏览器中根据目录去查找,但这种方式在浏览目录时比较方便,查找一个已知名字(或知道部分名字)的文件效率就比较低了。

相比之下,在source insight中查找文件非常简单,只要输入部分的文件名,就可以找到符合条件的文件。

我一直被这个问题所困扰,直到有一天,在http://www.vim.org/上发现了一个非常出色的插件,才彻底解决了查找文件效率低下的问题,它的功能毫不逊于source insight。在给该插件投票时,我选择了”Life Changing“。是的,它改变了我的生活!

这个插件的名字是:lookupfile!

Lookupfile插件可以在下面的链接下载:http://www.vim.org/scripts/script.php?script_id=1581

它使用vim 7.0中插入模式下的下拉菜单补全功能,因此只能在vim 7.0及以上版本中使用。

下载该插件后,把它解压到你的~/.vim目录中,就完成了安装。然后在vim中执行”:helptags ~/.vim/doc“命令,生成help文件索引,然后就可以使用”:help lookupfile“命令查看lookupfile插件的帮助文件了。

注:windows用户需要把这个插件解压在你的$vim/vimfiles或$HOME/vimfiles目录。

Lookupfile插件还需要最新的genutils支持,因此,需要下载genutils:http://www.vim.org/scripts/script.php?script_id=197

这个插件提供了一些通用的函数,可供其它的脚本使用。它的安装方法也是在~/.vim目录解压就可以了。需要注意的是,最新版本的genutils使用了新的自动加载方式,所以和以前的版本不兼容。如果你的其它插件需要使用genutils的旧版本的话,你需要参照genutils的说明进行配置,以便使新旧两个版本能协同工作。

现在我们介绍lookupfile插件。虽然名字为lookupfile,其实这个插件它不仅能用来查找文件,还可以在打开的缓冲区中查找,按目录查找,等等。

[项目文件查找]

Lookupfile在查找文件时,需要使用tag文件。它可以使用ctags命令生成的tag文件,不过查找效率会比较低。因此我们会专门为它生成一个包含项目中所有文件名的tag文件。

我编写了下面的shell脚本,为vim70的源代码,生成一个文件名tag文件。

#!/bin/sh
# generate tag file for lookupfile plugin
echo -e "!_TAG_FILE_SORTED\t2\t/2=foldcase/" > filenametags
find . -not -regex '.*\.\(png\|gif\)' -type f -printf "%f\t%p\t1\n" | \
    sort -f >> filenametags 

回想一下我们在”使用标签(tag)文件“一文中介绍的tag文件的格式。再对照脚本命令来看:

  • echo命令用来生成filenametags文件中的”!_TAG_FILE_SORTED”行,表明此tag文件是经过排序的。
  • find命令用来查找所有类型为普通文件,文件后缀名不是.png和.gif的文件,找到的文件按”文件名\t文件路径\t1″的格式输出出来。
  • sort命令则把find命令的输出重新排序,然后写入filenametags文件中

在~/src/vim70/目录下运行该脚本,会生成一个名为filenametags的文件,包含了vim70目录下的所有文件的名字及其所在目录。

现在我们需要让lookupfile插件知道到哪去找文件名tag文件。我们假定vim当前工作目录为~/src/vim70/,执行下面的命令:

:let g:LookupFile_TagExpr = '"./filenametags"' 

注:如果不设定g:LookupFile_TagExpr的值,那么lookupfile插件会以tags选项定义的文件作为它的tag文件。

现在我们就可以使用lookupfile来打开文件了,按”<F5>“或输入”:LookupFile“在当前窗口上方打开一个lookupfile小窗口,开始输入文件名(至少4个字符),随着你的输入,符合条件的文件就列在下拉列表中了。文件名可以使用vim的正则表达式,这大大方便了文件的查找。你可以用”CTRL-N“和”CTRL-P“(或者用上、下光标键)来在下拉列表中选择你所需的文件。选中文件后,按回车,就可以在之前的窗口中打开此文件。

下图是使用lookupfile插件查找文件的一个例子:

在屏幕最上方的窗口就是lookupfile窗口,在这个窗口中输入”gui.*x11″几个字符,查找到6个匹配文件,使用CTRL-N选中gui_x11.c文件,然后按回车,就会在前一个vim窗口中打开src/gui_x11.c文件,lookupfile窗口也自动关闭了。是不是非常方便?!

[缓冲区查找]

在开发过程中,我经常会同时打开数十甚至上百个文件。即使是使用BufExplorer插件,想在这么多buffer中切换到自己所要的文件,也不是件容易的事。

Lookupfile插件提供了一个按缓冲区名字查找缓冲区的方式,只要输入缓冲区的名字(可以是正则表达式),它就可以把匹配的缓冲区列在下拉列表中,同时还会列出该缓冲区内文件的路径,当你的buffer中有多个同名文件时,这可以帮你迅速找到你想要的文件。

使用”:LUBufs“命令开始在缓冲区中查找,输入缓冲区的名字,在你输入的过程中,符合条件的缓冲区就显示在下拉列表中了,选中所需缓冲区后,按回车,就会切换你所选的缓冲区。下图是一个示例:

[浏览目录]

Lookupfile插件还提供了目录浏览的功能,使用”:LUWalk“打开lookupfile窗口后,就可以输入目录,lookupfile会在下拉列表中列出这个目录中的所有子目录及文件供选择,如果选择了目录,就会显示这个目录下的子目录和文件;如果选择了文件,就在vim中打开这个文件。

下图是使用LUWalk的一个抓图:

Lookupfile插件还提供了LUPath和LUArgs两个功能,这两个功能我用的不多,就不在这里介绍了。感兴趣的朋友读一下lookupfile的手册。

[Lookupfile配置]

Lookupfile插件提供了一些配置选项,通过调整这些配置选项,使它更符合你的工作习惯。下面是我的vimrc中关于lookupfile的设置,供参考:

""""""""""""""""""""""""""""""
" lookupfile setting
""""""""""""""""""""""""""""""
let g:LookupFile_MinPatLength = 2               "最少输入2个字符才开始查找
let g:LookupFile_PreserveLastPattern = 0        "不保存上次查找的字符串
let g:LookupFile_PreservePatternHistory = 1     "保存查找历史
let g:LookupFile_AlwaysAcceptFirst = 1          "回车打开第一个匹配项目
let g:LookupFile_AllowNewFiles = 0              "不允许创建不存在的文件
if filereadable("./filenametags")                "设置tag文件的名字
let g:LookupFile_TagExpr = '"./filenametags"'
endif
"映射LookupFile为,lk
nmap <silent> <leader>lk :LUTags<cr>
"映射LUBufs为,ll
nmap <silent> <leader>ll :LUBufs<cr>
"映射LUWalk为,lw
nmap <silent> <leader>lw :LUWalk<cr>

有了上面的定义,当我输入”,lk“时,就会在tag文件中查找指定的文件名;当输入”,ll“时,就会在当前已打开的buffer中查找指定名字的buffer;当输入”,lw“时,就会在指定目录结构中查找。

另外,我还在项目相关的配置文件vim70sx.vim(参考保存项目相关配置)中加入了lookupfile所使用的tag文件的信息:

" lookup file tag file
let g:LookupFile_TagExpr = '"filenametags"' 

这样,在恢复前次会话时就给lookupfile插件定义了tag文件。

在用lookupfile插件查找文件时,是区分文件名的大小写的,如果想进行忽略大小写的匹配,可以使用vim忽略大小写的正则表达式,即在文件名的前面加上”\c”字符。举个例子,当你输入”\cab.c”时,你可能会得到”ab.c”、”Ab.c”、”AB.c”…

注:如果想加快lookupfile忽略大小写查找的速度,在生成文件名tag文件时,使用混合大小写排序。这在文章使用标签(tag)文件有所提及。

通常情况下我都进行忽略大小写的查找,每次都输入”\c”很麻烦。没关系,lookupfile插件提供了扩展功能,把下面这段代码加入你的vimrc中,就可以每次在查找文件时都忽略大小写查找了:

" lookup file with ignore case
function! LookupFile_IgnoreCaseFunc(pattern)
    let _tags = &tags
    try
        let &tags = eval(g:LookupFile_TagExpr)
        let newpattern = '\c' . a:pattern
        let tags = taglist(newpattern)
    catch
        echohl ErrorMsg | echo "Exception: " . v:exception | echohl NONE
        return ""
    finally
        let &tags = _tags
    endtry

    " Show the matches for what is typed so far.
    let files = map(tags, 'v:val["filename"]')
    return files
endfunction
let g:LookupFile_LookupFunc = 'LookupFile_IgnoreCaseFunc' 

有时在LUBufs时也需要忽略缓冲区名字的大小写,我是通过直接修改lookupfile插件的方法,在LUBufs查找的字符串前都加上”\c”,使之忽略大小写。如果你不想这样,可以每次在缓冲区名字前手动加上”\c”。

本文关于Lookupfile插件就介绍这么多,请阅读手册获取更多的信息。

这是一个非常好的插件,希望能为更多人喜爱!

vim-lookup:跳转到VimL代码中的变量或函数的定义 立即下载

相关推荐

ArcGIS栅格数据像元值与坐标值提取及Excel导出全流程解析

本文详细解析了使用ArcGIS将栅格数据批量提取像元值与坐标值并导出至Excel的全流程。通过“栅格转点”、“添加XY坐标”和“表转Excel”三大核心步骤,无需编程即可自动化处理遥感、环境等领域的空间数据,有效提升数据分析效率。

zeta9的博客 365

lookupfile.vim插件详解

lookupfile.vim是Vim的一个五星级的插件,它允许用户只输入部分文件名甚 至使用正 则表达式快速查找并打开目标文件,尤其对于程序员来说,lookupfile的作用绝对称得上“Life changing”。 lookupfile支持多种查找方式,大体分为三种,即在Buffer中查找、在指定路径下查找和在Tags文件中查找。其中,最使 lookupfile熠熠生辉的就是根据Tag

longfeey的专栏 1971

Valeo近场数据集:多模态行人意图检测技术解析

行人意图检测是智能驾驶系统的关键技术,通过分析行人运动轨迹预测其行为意图。传统方法受限于单传感器数据,难以应对复杂场景。多模态融合技术结合视觉、LiDAR和惯性测量数据,显著提升检测精度。Valeo近场数据集(VNF)创新性地采用鱼眼相机、多LiDAR和动作捕捉系统,实现3D姿态与意图标签的精准对齐。该数据集支持开发距离自适应的行人感知算法,在ADAS防碰撞、智能迎宾等场景具有重要应用价值。关键技术包括传感器同步、3D姿态重建和时空图卷积网络,为行业提供了标准化评估基准。

weixin_30566111的博客 660

vi/vim: lookupfile插件

本节所用命令的帮助入口: :help lookupfile 在文章保存项目相关配置中,我们讲过通过”:find“命令打开指定的文件,不过使用”:find“命令并不是非常的方便:一是如果项目比较大、文件比较多,find查找起来很慢;二是必须输入全部的文件名,不能使用正则表达式(regex)查找。 我们也介绍过vim提供的文件浏览插件,你可以在浏览器中根据目录...

weixin_33834137的博客 214

逆向实战:Soul聊天协议加密与Frida绕过检测

本文详细解析了Soul聊天协议逆向分析的全过程,重点介绍了如何利用Frida绕过应用的反调试检测机制。通过静态分析定位关键SO库,并编写Frida脚本动态Hook线程创建函数,成功实现对抗。文章还进一步追踪了基于DES算法的加密流程,并探讨了协议数据结构的解析方法,为移动应用安全研究提供了实战参考。

2w3e4r5t6y的博客 1132

拥有AI助手便能解放双手?——抖音直播脚本的生成

科技改变生活,AI助手帮你完成抖音创作!

Scientist_的博客 2352

vim lookupfile插件的使用

我感觉做大型开发的时候比较有用的一个插件。 安装: 1.下载looupfile,在$HOME/.vim/中解压安装。地址:http://www.vim.org/scripts/script.php?script_id=1581 2.下载genutils,在$HOME/.vim/中解压安装。地址:http://www.vim.org/scripts/script.php?script_id=1

RaymondAmos的技术专栏 4043

系统架构设计师【第1章】: 绪论 (核心总结)

系统架构 (System Architecture)是系统的一种整体的高层次的结构表示,是系统的骨架和根基,也决定了系统的健壮性和生命周期的长短。系统架构设计师是承担系统架构设计的核心角色,他不仅是连接用户需求和系统进一步设计与实现的桥梁,也是系统开发早期阶段质量保证的关键角色。通俗地说,系统架构 (System Architecture)

数据知道的博客 1万+

VIM插件之lookupfile插件

VIM插件之lookupfile插件   本节所用命令的帮助入口: :help lookupfile 在文章保存项目相关配置中,我们讲过通过”:find“命令打开指定的文件,不过使用”:find“命令并不是非常的方便:一是如果项目比较大、文件比较多,find查找起来很慢;二是必须输入全部的文件名,不能使用正则表达式(regex)查找。 我们也介绍过vim提供的文

lizhiok的专栏 927

第 1 章 Prometheus 监控 | Prometheus 入门

了解 Prometheus 监控系统,学会安装及了解页面功能。

甘蓝的专栏 486

RV1126笔记二十七:MetaRTC6移植

MetaRTC6移植

6038

类似vim中lookupfile的emacs插件---globalff

  我是先学Vim后学Emacs的。本人并对这两大神器并没有明显的偏向,自己开发机上个两个都有装,两个都有实战的项目。所以无论你是Vimer还是Emacser,都请不要对我口诛笔伐。如果非要我说个取向,定个说法的话,我会说:SSH连到服务器上,服务器系统默认什么用什么,入乡随俗。其实,如果默认的是Notepad++我也是会用的。   回过头来说正题,这实质上是我刚开始学Emacs时的问题,那将近...

道仁 393

MATLAB代码转到FPGA代码

添加完文件之后,需要设置输入的数据类型,设置完之后点击Workflow Advisor。MATLAB文件包含一个功能实现文件和测试文件。对应FPGA中的功能文件和测试文件。然后,将功能文件和测试文件添加到相应位置。然后选择APP中的HDL Coder代码。首先需要编写好MATLAB文件。点击链接,就可以查看你看到的代码。可以自己生成代码的语言类型。

小柚子的博客 3062

vim插件-lookupfile

作为一个在http://www.vim.org/上被绝大多数用户投票为”Life Changing“的插件,的的确确改变了我们的生活。 先简要介绍一下什么是lookupfile:一个vim插件,不仅可以极高效率的来查找文件,还可以在打开的缓冲区中查找、按目录查找文件,等等。 准备下载:(以下网站需要FQ,不会的可以问) Lookupfile插件可以在下面的链接下载:http:...

weixin_30516243的博客 145

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

vim的lookupfile插件的ctagfile脚本

使用vim的lookupfile插件,需要tagfile的脚本,记录一下,防止下次用到,这个也是在网上找的,增加了忽略.svn和.pyc的相关文件。   #!/bin/sh # generate tag file for lookupfile plugin echo -e "!_TAG_FILE_SORTED\t2\t/2=foldcase/"&gt; filenametags f...

maplye 239

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

vim lookupfile插件tagfile 生成

[code="java"]

stefan321的专栏 186

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

vi/vim使用进阶: lookupfile插件

本节所用命令的帮助入口: :help lookupfile 在文章保存项目相关配置中,我们讲过通过”:find“命令打开指定的文件,不过使用”:find“命令并不是非常的方便:一是如果项目比较大、文件比较多,find查找起来很慢;二是必须输入全部的文件名,不能使用正则表达式(regex)查找。 我们也介绍过vim提供的文件浏览插件,你可以在浏览器中根据目录去查找,但这种方式在浏览目

fivedoumi的专栏 1638

使用VIM开发软件项目 - (7) lookupfile插件

本节所用命令的帮助入口: 前面我们讲过通过”:find”命令打开指定的文件,不过使用”:find”命令并不是非常的方便:一是如果项目比较大、文件比较多,find查找起来很慢;二是必须输入全部的文件名,不能使用正规表达式查找。我们也介绍过VIM提供的文件浏览插件,你可以在浏览器中根据目录去查找,但这种方式在浏览目录时比较方便,查找一个已知名字(或知道部分名字)的文件效率就比较低了

1074

vim lookupfile插件实现fuzzy查找文件

近来使用neocomplete补全发现输入abc可以提示addddbeeeec这样的内容,因此在查找文件的时候也想这样,这样可以方便一些。 lookupfile的安装使用可以查看官方文档,在.vimrc中添加以下代码即可 " lookup file with fuzzy search function! LookupFile_FuzzyFunc(pattern)     let _

wuhong40的专栏 1017

VIM插件lookupfile的问题

最近使用VIM,一直被lookupfile的问题困扰,不知道怎么回事,enter键无法打开查到的文件。在对vinrc文件里面的配置一项一项测试后发现:只要注释掉set paste这行,lookupfile就能恢复正常。原来这个配置和lookupfile有冲突。...

Bill的专栏 460

vim 用lookupfile插件报错E117

我碰到来E117这个错误,现在解决了。 原因来,我这些插件是用root用户装到,放在/etc下面到,插件*.vim也是只有root用户有可读权限,其他用户都是没权限(如下) -r–r–r– 1 root root 51932 2009-09-16 10:25 genutils.vim -r-x—— 1 root root 16556 2007-08-25 09:33 lookupfile.v

C++菜鸟之C++之旅 1225

windows 下vim使用LookupFile插件

基本步骤参考:lookupfile.vim插件详解 http://cncc.bingj.com/cache.aspx?q=windows+%E4%B8%8B+lookupfile&d=4664005294688155&mkt=zh-CN&setlang=zh-CN&w=MF74hD6ludZI8auwTuztW8enSTb4m8wT 按照此文配置之后,在linux与windows上执行本地vim

ckmufeng的博客 678

vim的lookupfile插件在windows平台上tag文件生成

在linux平台上,生成lookupfile的tag文件,采用如下的shell命令:#!/bin/shecho -e !_TAG_FILE_SORTED/t2/t/2=foldcase/ > filenametagsfind . -not -regex .*/./(png/|gif/) -type f -printf "%f/t%p/t1/n" | sort -f >> fil

IT民工的小窝 3619
上一篇: 状态栏显示相关View Flag参数介绍
下一篇: repo的用法
byszy
博客等级 码龄17年 42粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值