2017-08-01 24 views
4

vimにマージ競合があるファイルのシンタックスグループを追加するプラグインを作っています。gitマージ競合のためのVim regex

以下に、競合の例を示します。

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

=======から<<<<<<< HEADの現在の正規表現が正しく動作しています。

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

しかし、イムは、正規表現は、セパレータの後にコミットSHAまでアップすべてを取得する必要があり=======

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

enter image description here

後にすべてのための右の正規表現を取得しようとして立ち往生。

ヒント/ポインタはありますか?あなたのコマンドで

+0

私の[ConflictDetection plugin](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

関連する問題