git
が3方向マージを実行していて、競合がある場合解決できません。ファイルのその領域を次のようにマークアップします。
No unresolvable conflicts here <<<<<<< HEAD xyz ||||||| parent of ... abc ======= 123 >>>>>>> ...
変更する方法(ある場合はその方法)はありますか?これら3つの「セクション」の背景色:
-
<<<<<<< HEAD
||||||| parent of ...
-
||||||| parent of ...
の前の行=======
- 行
>>>>>>> ...
(編集:質問は、他の行に応じて特定の行を強調表示する方法があるかどうかを中心に展開します行。xyz
は通常は強調表示されませんが、<<<<<<<
と|||||||
強調表示されます。)
他の競合マーカーのセットも処理できますか?
コメントの時点で入手可能な最新バージョンのvimを使用します。したがって、現時点では、8.1.1183です。
端末では、黒の背景と256色を使用しています。これらのセクションに最も暗いR / G / B / C / M / Yカラーを使用するとよいと思っていたので、構文の強調表示に大きな問題は発生しませんでした(ANSIカラー52、22について話します)。 17、23、53、および58-1〜6色ではありません。)
コメント
回答
Vim構成で、次の操作を実行できます(お好みの色とスタイル):
function! ConflictsHighlight() abort syn region conflictStart start=/^<<<<<<< .*$/ end=/^\ze\(=======$\||||||||\)/ syn region conflictMiddle start=/^||||||| .*$/ end=/^\ze=======$/ syn region conflictEnd start=/^\(=======$\||||||| |\)/ end=/^>>>>>>> .*$/ highlight conflictStart ctermbg=red ctermfg=black highlight conflictMiddle ctermbg=blue ctermfg=black highlight conflictEnd ctermbg=green cterm=bold ctermfg=black endfunction augroup MyColors autocmd! autocmd BufEnter * call ConflictsHighlight() augroup END
次のようにレンダリングされます:
それはあなたが求めているものですか?
コメント
- それは'絶対に私が'後にしたものです。私は' vimscriptにいくつかの奇妙な点があります。あなたの例を入力すると、あなたが投稿した画像と同じように見えます。あなたの例を保存してからvimを再起動して新しいファイルを編集すると、ひどく手に負えなくなります。 (vim 8.1.1186。)さらに奇妙なことに、奇妙に表示されている既存のファイルのすべての行を削除し、その内容を再貼り付けすると、'はまだ間違って表示されます。 i.ibb.co/jvGMH6t/wtfvim.jpg
- 実際のマージシナリオで使用すると、画像よりもさらに奇妙な色がトリガーされますIリンク済み:
conflictStart
が適切に強調表示されている;conflictMiddle
の|||||||
の部分は赤で表示されますが、残りの行は本来は青で表示されます。=======
は赤で表示されます。黄色の>>>>>>> .*
行(黄色が入った場所、黄色はありません)。 'が競合の一部であってはならないファイルの残りの部分は緑色で表示されますが、それでもconflictEnd
として取得されます。SynStack()
関数from stackoverflow.com/questions/30247603 - 同様に、実際のマージシナリオで、コンテンツをコピーして新しいファイルに貼り付けると、期待どおりに表示されますが、'保存してvimを再起動すると、間違って表示されます。
- 実際のマージシナリオでは、
:diffoff
を使用して元の差分の色付けを無効にし、ファイルタイプのみを残すことができます'構文のハイライト。最初のケースを確認するために少し遊んでみます。 - 申し訳ありませんが、投稿前にconflict_markerプラグインをインストールしたままにしていたことを忘れていました。これは競合していて、問題を引き起こしていました。それを削除し、問題が発生しなくなった。
回答
- conflict-marker.vim はマーカー自体を強調表示できます。また、ジャンプとそれらを解決する方法も提供します。
- 自分の ConflictDetectionプラグインは、セクション全体を検出して強調表示します(構文の強調表示を介して)。コンパニオン ConflictMotionsプラグインは、解決のためのモーションとコマンドを提供します。
xyz
は通常は強調表示されませんが、 '<<<<<<<
と|||||||
の間強調表示したいのですが。