V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
G_virus
V2EX  ›  Vim

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

  •  
  •   G_virus · 2014-01-08 12:05:22 +08:00 · 13286 次点击
    这是一个创建于 4008 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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   ·   实用小工具   ·   2755 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 12:38 · PVG 20:38 · LAX 04:38 · JFK 07:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.