我经常在我的项目中使用这个来查看更改:
git diff 5b80e3be314143f 3b34d24a55ab -- include/* src/* | vim -
所有以要更改的文件开头的行都是这样写的:
diff --git a/include/behaviors/mechanical/crystal_behavior.h b/include/behaviors/mechanical/crystal_behavior.h
我希望能够使用tagbar轻松地浏览文件,它使用ctags,并获得例如文件名,这里是crystal_behavior.h
。所以,我知道我可以在. ctags文件中使用类似这样的内容:
--langdef=diff
--langmap=diff:.diff
--regex-diff=/^diff --git .*b\/(.*)(\/(.*))+$/\.\. \2/d,file/
与此一起在我的. vimrc中
let g:tagbar_type_diff = {
\ 'ctagstype' : 'diff',
\ 'kinds' : [
\ 'd:Files',
\ ],
\ 'sort' : 0,
\ }
我这里的问题是我可以在--regex-diff=*
中放入什么来获得文件名?(我得到了或多或少)是否可以进一步标记每个文件中的块?这是我不能得到的最棘手的部分。
谢谢
- 附加问题:如果我直接从buffer中读取diff,tagbar不会生成标签,但是如果我先执行
git diff ...... > patch.diff
,然后执行vim patch.diff
,tagbar就可以工作了。
1条答案
按热度按时间hgc7kmma1#
Universal-ctags(https://ctags.io)有一个内置的diff解析器,从geany导入: