我经常在我的项目中使用它来查看更改:
git diff 5b80e3be314143f 3b34d24a55ab -- include/* src/* | vim -
所有以更改文件开头的行都是这样写的:
diff --git a/include/behaviors/mechanical/crystal_behavior.h b/include/behaviors/mechanical/crystal_behavior.h
我希望能够使用标签栏轻松导航文件,标签栏使用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=*
放入什么来获取有意义的文件名? (我或多或少)
是否有可能更进一步,并在每个文件中标记帅哥?这是我无法得到的最棘手的部分。
谢谢
答案 0 :(得分:1)
Universal-ctags(https://ctags.io)有一个内置的解析器,用于从geany导入的diff:
[jet@localhost tmp]$ cat foo.diff
diff --git a/source.mak b/source.mak
index 2550028..eaa9154 100644
--- a/source.mak
+++ b/source.mak
@@ -44,6 +44,7 @@ PARSER_SOURCES = \
$(PARSER_DIR)/clojure.c \
$(PARSER_DIR)/css.c \
$(PARSER_DIR)/cobol.c \
+ $(PARSER_DIR)/diff.c \
$(PARSER_DIR)/dosbatch.c \
$(PARSER_DIR)/eiffel.c \
$(PARSER_DIR)/erlang.c \
[jet@localhost tmp]$ ~/var/ctags/ctags --fields=+K --sort=no -o - foo.diff
a/source.mak foo.diff /^--- a\/source.mak$/;" modifiedFile
-44,6 +44,7 foo.diff /^@@ -44,6 +44,7 @@ PARSER_SOURCES = \\$/;" hunk modifiedFile:a/source.mak