天天看點

java todo fixme_Vim中列出TODO與FIXME等備注的方法

前言

很多程式員,包括我,會在寫代碼的時候,習慣性的用TODO, FIXME, HACK等作為一些注釋的字首。這樣友善自己和後來者預先知道相關注釋和代碼的狀況

不過這樣的備注隻有是以後恰巧看到這段代碼的時候才能看到,沒法在一次發版或者空閑的時候,有一個直覺的界面能看到這個項目裡面所有這樣的關鍵詞。

這個時候一個簡單的自定義指令興許能幫到你:

command Todo Ack! 'TODO\|FIXME'

效果如下:

java todo fixme_Vim中列出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管理器就已經完成了。

總結

以上就是這篇文章的全部内容了,希望本文的内容對大家的學習或者工作能帶來一定的幫助,如有疑問大家可以留言交流,謝謝大家對腳本之家的支援。