V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
G_virus
V2EX  ›  Vim

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

  •  
  •   G_virus · Jan 8, 2014 · 14076 views
    This topic created in 4452 days ago, the information mentioned may be changed or developed.
    https://github.com/dyng/ctrlsf.vim

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

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

    欢迎各位提issue~ 当然如果是pull-request的话就更好了 :)
    Supplement 1  ·  Jan 14, 2014
    更新到0.05版,欢迎大家更新测试~

    新增了以下功能以及bugfix:

    1. 无参数时默认搜索光标下单词
    2. 修正了和tagbar的冲突
    3. 新增预览模式,快捷键p
    4. 自动展开目标文件的折叠
    Supplement 2  ·  Feb 1, 2014
    更新到v0.08,新增了以下特性:

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

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

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

    写到v0.1版且基本稳定的话就作为正式版发布了~
    Supplement 3  ·  Mar 3, 2014
    更新至v0.09,增加了以下特性

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

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

    nnoremap <C-F> :CtrlSF<space>

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

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

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

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

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

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

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

    下一版会加入“无参数时搜索光标下单词”的功能。
    hitsmaxft
        14
    hitsmaxft  
       Jan 8, 2014
    G_virus
        15
    G_virus  
    OP
       Jan 8, 2014
    @strak47 抱歉,已经修复了,请更新最新版。

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

    同时增加了对ack-grep的支持。感谢提交issue。
    strak47
        16
    strak47  
       Jan 8, 2014
    @G_virus 已更新,赞一个~
    hhkbp2
        17
    hhkbp2  
       Jan 9, 2014
    顶原创
    G_virus
        18
    G_virus  
    OP
       Jan 14, 2014
    更新到0.05版,欢迎大家更新测试~

    新增了以下功能以及bugfix:

    1. 无参数时默认搜索光标下单词
    2. 修正了和tagbar的冲突
    3. 新增预览模式,快捷键p
    4. 自动展开目标文件的折叠
    leon907
        19
    leon907  
       Jan 15, 2014
    很好用 谢谢
    G_virus
        20
    G_virus  
    OP
       Feb 1, 2014
    更新到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  
       Feb 1, 2014
    赞 之前用ag.vim就觉得很蛋疼
    Numbcoder
        22
    Numbcoder  
       Feb 1, 2014 via iPhone
    @G_virus 过年都不休息啊,辛苦了!
    G_virus
        23
    G_virus  
    OP
       Feb 1, 2014
    @Numbcoder 码年嘛
    marchtea
        24
    marchtea  
       Feb 1, 2014
    同来感谢,已star~
    xi4oh4o
        25
    xi4oh4o  
       Feb 1, 2014
    非常棒:)
    G_virus
        26
    G_virus  
    OP
       Feb 2, 2014
    @marchtea @xi4oh4o 感谢star :)
    griffinqiu
        27
    griffinqiu  
       Feb 2, 2014 via iPhone
    谢谢,马上起床试试
    G_virus
        28
    G_virus  
    OP
       Mar 3, 2014
    更新至v0.09,增加了以下特性

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

    另外因为平时很少使用标签页,如果有什么bug或者对现在的默认行为有什么建议的话请发issue指出。
    fooCoder
        29
    fooCoder  
       Mar 6, 2014
    cool
    Fedor
        30
    Fedor  
       Mar 26, 2014
    哇,最想要得就是这个功能。
    kshatriya
        31
    kshatriya  
       Apr 25, 2014
    ...我用unite
    Aspirin
        32
    Aspirin  
       Apr 26, 2014
    非常好用,非常感谢。
    hominlinx
        33
    hominlinx  
       Nov 19, 2014
    只搜索后缀名为cpp的关键字
    用啥啊
    ThomasZ
        34
    ThomasZ  
       Sep 10, 2015
    cool
    正在找一个类似的全局搜索呢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5643 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 08:57 · PVG 16:57 · LAX 01:57 · JFK 04:57
    ♥ Do have faith in what you're doing.