• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Vim中列出TODO与FIXME等备注的方法

    前言

    很多程序员,包括我,会在写代码的时候,习惯性的用TODO, FIXME, HACK等作为一些注释的前缀。这样方便自己和后来者预先知道相关注释和代码的状况

    不过这样的备注只有是以后恰巧看到这段代码的时候才能看到,没法在一次发版或者空闲的时候,有一个直观的界面能看到这个项目里面所有这样的关键词。

    这个时候一个简单的自定义命令兴许能帮到你:

    command Todo Ack! 'TODO\|FIXME'

    效果如下:


    不过要想使这条命令生效,需要一些环境准备工作

    Ack

    首先我们需要安装Ack或者Ag,这两个都是命令行下的一个全局搜索工具,比系统自带的grep要快很多的。

    这里的安装以Ag为例,因为这个是基于C来重写的Ack并新增了很多特性,效率也是比Ack快了很多的。

    # OSX
    brew install the_silver_searcher
    # Archlinux
    pacman -S the_silver_searcher
    # Ubuntu
    apt-get install silversearcher-ag

    在安装完成之后,就可以在shell里面测试一下

    ag TODO ./

    Ack.vim

    Ack.vim是一款插件,用来方便在Vim里面使用Ack/Ag, 然后通过Quickfix来提供搜索结果

    不过这款插件,默认是使用的Ack作为搜索引擎,为了能用上我们刚刚安装的Ag,需要在~/.vimrc里面作一些配置:

    if executable('ag')
     let g:ackprg = 'ag --vimgrep'
    endif

    这段配置是引用的官方仓库的Readme

    不过也看很多人是用的

    if executable('ag')
     let g:ackprg = 'ag --nogroup --nocolor --column'
    endif

    本人测试之后,发现二者并没有什么区别。可能对于Ag来说 --vimgrep是等同于--nogroup --nocolor --column 的。

    这个时候在Vim的命令行里面输入

    :Ack! TODO 

    是可以实现上图所示效果的,而且还可以通过

    :AckAdd FIXME

    这样的方式来附加其它要查看的。

    不过这样的方式,命令还是有点长。所以配置一个alias来替代上面的命令,是一个比较符合懒人的想法

    ~/.vimrc里面新增

    command Todo Ack! 'TODO\|FIXME'

    然后在Vim的命令行里面输入:

    :Todo

    就能实现列出当前项目里面的所有TODO,FIXME了,而且可以根据自己的需要来扩展这样的关键字,像我就扩展为如下代码:

    command Todo Ack! 'TODO|FIXME|CHANGED|BUG|HACK'
    command Debug Ack! 'NOTE|INFO|IDEA'

    区分了Todo和Debug两种功能。

    高亮

    Vim里面会自动的高亮TODO、FIXME,但是不会高亮CHANGED这样的关键字,所以需要手动的来指定一下,在~/.vimrc里面添加如下配置:

    if has("autocmd")
     " Highlight TODO, FIXME, NOTE, etc.
     if v:version > 701
     autocmd Syntax * call matchadd('Todo', '\W\zs\(TODO\|FIXME\|CHANGED\|BUG\|HACK\)')
     autocmd Syntax * call matchadd('Debug', '\W\zs\(NOTE\|INFO\|IDEA\)')
     endif
    endif

    上面这段代码是摘抄的,具体的功能就是匹配TODO等关键字,然后加上语法高亮。

    综上,一个简单好用的TODO管理器就已经完成了。

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

    上一篇:Linux bash删除文件中含“指定内容”的行功能示例
    下一篇:基于shell的if和else详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Vim中列出TODO与FIXME等备注的方法 Vim,中,列出,TODO,与,FIXME,