写了一个仿sublime全局搜索的vim插件 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
G_virus
V2EX    Vim

写了一个仿sublime全局搜索的vim插件

  •  
  •   G_virus 2014-01-08 12:05:22 +08:00 13760 次点击
    这是一个创建于 4305 天前的主题,其中的信息可能已经有所发展或是发生改变。
    https://github.com/dyng/ctrlsf.vim

    使用ag或者ack作为作为后端,所以首先你需要安装这两个工具(推荐ag,速度比ack快很多)。

    当初因为觉得ack.vim的结果只显示一行,没有上下文看起来非常痛苦,所以仿照了sublime的'Find in Files...'写了这个插件。相比于sublime的一点优势是使用了ag作为后端,所以搜索会很快。(在10w行以上的一个公司项目里搜索也只需要半秒左右)

    欢迎各位提issue~ 当然如果是pull-request的话就更好 :)
    第 1 条附言    2014-01-14 23:20:54 +08:00
    更新到0.05版,欢迎大家更新测试~

    新增了以下功能以及bugfix:

    1. 无参数时默认搜索光标下单词
    2. 修正了和tagbar的冲突
    3. 新增预览模式,快捷键p
    4. 自动展开目标文件的折叠
    第 2 条附言    2014-02-01 17:59:01 +08:00
    更新到v0.08,新增了以下特性:

    1. 新增preview模式,按p开启。个人对这个功能还比较满意 : )
    2. 新增快捷键Ctrl-J和Ctrl-K,快速移动到下一个和上一个匹配。
    3. 支持airline,状态栏中会显示:
    1) 搜索的字符串。
    2) 光标所在行所处的文件。
    3) 总匹配数以及当前匹配数。
    4. 在搜索结果的最开头会显示匹配的总行数以及总文件数。

    欢迎各位提bug和feature request,下一版预定增加的特性有:

    1. 自定义缩进的空格数。
    2. 在新标签页中打开文件。

    写到v0.1版且基本稳定的话就作为正式版发布了~
    第 3 条附言    2014-03-03 13:39:10 +08:00
    更新至v0.09,增加了以下特性

    1. 增加了快捷键t和T(在新的标签页打开选定文件),以及O(打开文件同时不关闭ctrlsf窗口)。
    2. 增加新的配置项g:ctrlsf_leading_space,用于控制缩进时使用的空格数。注意这里的空格数包括行号占用的列数。默认值12,推荐不要设置小于8(因为如果文件超过10万行的话,行号本身就要占用6个字符,再加上最后的冒号1个字符,共7个字符),不过如果缩进太深使得显示效果不好的话可以适当缩小。

    另外因为平时很少使用标签页,如果有什么bug或者对现在的默认行为有什么建议的话请发issue指出。
    34 条回复    2015-09-10 14:34:26 +08:00
    loseblue
        1
    loseblue  
       2014-01-08 12:23:41 +08:00   1
    好东西!支持楼主一个
    Numbcoder
        2
    Numbcoder  
       2014-01-08 13:12:06 +08:00
    一直想要这么个插件,可惜自己不会 Viml。
    感谢!
    yangg
        3
    yangg  
       2014-01-08 13:18:49 +08:00
    用:命令这种用起来不方便吧,可以弄成lookupfile那种弄个输入框的?
    strak47
        4
    strak47  
       2014-01-08 15:44:45 +08:00
    为什么提示 E117: Unknown function: CtrlSF#Search 呢
    G_virus
        5
    G_virus  
    OP
       2014-01-08 15:48:14 +08:00
    @yangg 可以用映射来方便输入,比如我设了:

    nnoremap <C-F> :CtrlSF<space>

    这样按了Ctrl+F之后就可以直接输入了。
    G_virus
        6
    G_virus  
    OP
       2014-01-08 15:50:34 +08:00
    @strak47 你是使用什么方法安装的?这个错误说明autoload/ctrlsf.vim因为某些原因没有加载。
    loseblue
        7
    loseblue  
       2014-01-08 15:51:32 +08:00
    nmap <F3> <ESC>:CtrlSF <c-r><c-w><CR>
    nmap <C-F3> <ESC>:CtrlSFOpen<CR>

    这样按F3就可以直接搜索光标的所在词了。
    loseblue
        8
    loseblue  
       2014-01-08 15:57:11 +08:00
    报两个bug:
    在tabbar返回时会出现错误,有时会在tabbar中打开了跳转文档,有时tabbar会空出很大一片空白
    当开启了tagbar后,跳转后会导致tagbar被拉宽

    一个需求:
    希望把代码预览缩掉一些空格,我有些超过30个空格的缩进,导致预览效果很差

    总的来说是好软件!希望楼主加油!
    strak47
        9
    strak47  
       2014-01-08 16:08:55 +08:00
    @G_virus 就通过vundle啊, 卸了再装还是这样。。
    Numbcoder
        10
    Numbcoder  
       2014-01-08 16:09:48 +08:00
    @G_virus
    已经用上了,非常不错!
    希望能支持搜索结果窗口垂直分割
    yangg
        11
    yangg  
       2014-01-08 16:40:14 +08:00
    @G_virus 不是映射的问题,是随着输入的文本改变,显示的结果要变的问题
    G_virus
        12
    G_virus  
    OP
       2014-01-08 18:47:07 +08:00
    @loseblue 确实可能是bug,因为目前的实现是在进入CtrlSF窗口前的最后一个窗口打开新文件。有一个work around的方法是把CtrlSF打开的位置调整到右边(如果你的Tagbar是在左边的话)

    let g:ctrlsf_open_left = 0
    G_virus
        13
    G_virus  
    OP
       2014-01-08 18:54:09 +08:00
    @strak47 尝试一下更新vundle。最好能在Github上提一个issue,把你的系统版本,vim版本等信息附一下。

    @Numbcoder 感谢支持,会加入之后的开发计划中的。

    @yangg 实时搜索我感觉不是很必要,不过会考虑一下。

    下一版会加入“无参数时搜索光标下单词”的功能。
    hitsmaxft
        14
    hitsmaxft  
       2014-01-08 19:22:55 +08:00
    G_virus
        15
    G_virus  
    OP
       2014-01-08 22:28:27 +08:00
    @strak47 抱歉,已经修复了,请更新最新版。

    其实是个很恶心的bug……因为Mac的文件系统大小写不敏感,所以尽管函数名大小写拼错了但在Mac上依然能跑,换到Linux这样的大小写敏感的文件系统上就找不到函数了……

    同时增加了对ack-grep的支持。感谢提交issue。
    strak47
        16
    strak47  
       2014-01-08 23:50:22 +08:00
    @G_virus 已更新,赞一个~
    hhkbp2
        17
    hhkbp2  
       2014-01-09 11:35:50 +08:00
    顶原创
    G_virus
        18
    G_virus  
    OP
       2014-01-14 23:13:50 +08:00
    更新到0.05版,欢迎大家更新测试~

    新增了以下功能以及bugfix:

    1. 无参数时默认搜索光标下单词
    2. 修正了和tagbar的冲突
    3. 新增预览模式,快捷键p
    4. 自动展开目标文件的折叠
    leon907
        19
    leon907  
       2014-01-15 11:43:28 +08:00
    很好用 谢谢
    G_virus
        20
    G_virus  
    OP
       2014-02-01 17:59:27 +08:00
    更新到v0.08,新增了以下特性:

    1. 新增preview模式,按p开启。个人对这个功能还比较满意 : )
    2. 新增快捷键Ctrl-J和Ctrl-K,快速移动到下一个和上一个匹配。
    3. 支持airline,状态栏中会显示:
    1) 搜索的字符串。
    2) 光标所在行所处的文件。
    3) 总匹配数以及当前匹配数。
    4. 在搜索结果的最开头会显示匹配的总行数以及总文件数。

    欢迎各位提bug和feature request,下一版预定增加的特性有:

    1. 自定义缩进的空格数。
    2. 在新标签页中打开文件。

    写到v0.1版且基本稳定的话就作为正式版发布了~
    zhouquanbest
        21
    zhouquanbest  
       2014-02-01 20:14:59 +08:00
    赞 之前用ag.vim就觉得很蛋疼
    Numbcoder
        22
    Numbcoder  
       2014-02-01 21:06:17 +08:00 via iPhone
    @G_virus 过年都不休息啊,辛苦了!
    G_virus
        23
    G_virus  
    OP
       2014-02-01 21:36:17 +08:00
    @Numbcoder 码年嘛
    marchtea
        24
    marchtea  
       2014-02-01 22:44:46 +08:00
    同来感谢,已star~
    xi4oh4o
        25
    xi4oh4o  
       2014-02-01 23:25:44 +08:00
    非常棒:)
    G_virus
        26
    G_virus  
    OP
       2014-02-02 10:12:39 +08:00
    @marchtea @xi4oh4o 感谢star :)
    griffinqiu
        27
    griffinqiu  
       2014-02-02 12:47:55 +08:00 via iPhone
    谢谢,马上起床试试
    G_virus
        28
    G_virus  
    OP
       2014-03-03 13:38:46 +08:00
    更新至v0.09,增加了以下特性

    1. 增加了快捷键t和T(在新的标签页打开选定文件),以及O(打开文件同时不关闭ctrlsf窗口)。
    2. 增加新的配置项g:ctrlsf_leading_space,用于控制缩进时使用的空格数。注意这里的空格数包括行号占用的列数。默认值12,推荐不要设置小于8(因为如果文件超过10万行的话,行号本身就要占用6个字符,再加上最后的冒号1个字符,共7个字符),不过如果缩进太深使得显示效果不好的话可以适当缩小。

    另外因为平时很少使用标签页,如果有什么bug或者对现在的默认行为有什么建议的话请发issue指出。
    fooCoder
        29
    fooCoder  
       2014-03-06 10:46:20 +08:00
    cool
    Fedor
        30
    Fedor  
       2014-03-26 22:30:49 +08:00
    哇,最想要得就是这个功能。
    kshatriya
        31
    kshatriya  
       2014-04-25 12:22:49 +08:00
    ...我用unite
    Aspirin
        32
    Aspirin  
       2014-04-26 14:34:41 +08:00
    非常好用,非常感谢。
    hominlinx
        33
    hominlinx  
       2014-11-19 10:01:19 +08:00
    只搜索后缀名为cpp的关键字
    用啥啊
    ThomasZ
        34
    ThomasZ  
       2015-09-10 14:34:26 +08:00
    cool
    正在找一个类似的全局搜索呢
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3860 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 00:56 PVG 08:56 LAX 17:56 JFK 20:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86