2017-08-01 37 views
4

我正在制作一个插件,它将为在vim中存在合并冲突的文件添加语法组。Vim正则表达式git合并冲突

示例冲突如下所示。

<<<<<<< HEAD 
ourselves 
======= 
themselves 
>>>>>>> deadbeef

目前正则表达式为<<<<<<< HEAD=======工作正常。

syntax region conflictHead containedin=ALL start=/^<<<<<<< \@=/ end=/^=\@=/ 

但是我卡住试图让一切正确的正则表达式后=======

syntax region conflictMerge containedin=ALL start=/^=======$\@<!/ end=/^>>>>>>> \@=/ 

enter image description here

正则表达式应该得到的一切分离后,直到犯煞。

任何提示/指针?

+0

我的[ConflictDetection插件](http://www.vim.org/scripts/script.php?script_id=4129)已经实现了这个。 –

回答

3

在您的命令:

syn region conflictMerge containedin=ALL start=/^=======$\@<!/ end=/^>>>>>>> \@=/ 

也许你可以更换模式:

^=======$\@<! 

有了:

^=======\zs$ 

在我的机器,它似乎做你想要什么,即突出显示=======之后的文字,直到下一个>>>>>>>

如果它有效并且您想更好地了解\zs,请参阅:h \zs。基本上,它将比赛之前的所有内容都排除在外,并将其用作积极的断言(之前在真正感兴趣的比赛之前必须出现的内容)。

+0

嗯,这对我来说并不突出。你有什么样的截图吗? – mhartington

+0

@mhartington很抱歉。如果我误解了这个问题,我会删除答案。这是一个显示突出显示的gif:https://imgur.com/a/cEEkF – user852573

+0

嗯,这就是我想要的,但由于某些原因,它没有突出显示conflictMerge组。在vim和neovim尝试 – mhartington