Jeśli git wykonuje trójstronne scalanie i występuje konflikt nie może „t rozwiązać, zaznacza ten obszar pliku w ten sposób:

No unresolvable conflicts here <<<<<<< HEAD xyz ||||||| parent of ... abc ======= 123 >>>>>>> ... 

Czy istnieje sposób (a jeśli tak, to jak) zmienić kolor tła tych 3 „sekcji”:

  • <<<<<<< HEAD w wierszu przed ||||||| parent of ...
  • ||||||| parent of ... przez wiersz przed =======
  • Wiersz za ======= przez wiersz >>>>>>> ...

(EDYCJA: Pytanie dotyczy tego, czy istnieje sposób na wyróżnienie pewnych wierszy w zależności od innych linie. xyz zwykle nie byłyby podświetlone, ale znajdują się między <<<<<<< a ||||||| byłby wyróżniony.)

Z możliwością obsługi innych zestawów znaczników konfliktu?

Używanie najnowszej wersji vim dostępnej w momencie komentowania. Tak więc od teraz 8.1.1183.

W moim terminalu używam czarnego tła i 256 kolorów. Pomyślałem, że fajnie byłoby nadać tym sekcjom najciemniejsze kolory R / G / B / C / M / Y, więc nie powodowały one większego problemu z podświetlaniem składni. (Mówiąc o kolorach ANSI 52, 22, 17, 23, 53 i 58 – nie w kolorach 1-6.)

Komentarze

  • Wystarczyłoby proste zapytanie w wyszukiwarce Google: github.com/rhysd/conflict-marker.vim
  • @klaus, powinienem był wspomnieć, że patrzyłem na tę wtyczkę, robiąc dużo wyszukiwanie w google. Ta wtyczka podkreśla same znaczniki konfliktu. Nie ' nie podświetla również tekstu, z którym te znaczniki są powiązane, w innych wierszach. Myślę, że głównym problemem jest ' to sposób na wyróżnienie pewnych wierszy w zależności od innych. Oznacza to, że w moim przykładzie xyz zwykle nie byłoby podświetlone, ale ponieważ ' s między <<<<<<< a ||||||| Chciałbym, żeby to było wyróżnione.

Odpowiedz

W konfiguracji Vima możesz wykonać następujące czynności (zmienić kolory i style według własnych upodobań):

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 

Który renderuje się w następujący sposób:

tutaj wprowadź opis obrazu

Czy o to Ci chodzi?

Komentarze

  • To ' jest absolutnie tym, czym ' m później. ' Mam jednak pewne dziwactwa z Vimscriptem. Jeśli wpiszę Twój przykład, będzie wyglądał tak, jak opublikowany przez Ciebie obraz. Jeśli zapiszę twój przykład, a następnie ponownie uruchomię edycję vima nowego pliku, okropnie się nie powiedzie. (vim 8.1.1186.) Jeszcze dziwniejsze, jeśli następnie usunę wszystkie linie w istniejącym pliku, które dziwnie się wyświetlają, i ponownie wkleję jego zawartość, ' nadal jest wyświetlany nieprawidłowo. i.ibb.co/jvGMH6t/wtfvim.jpg
  • Użycie go w rzeczywistym scenariuszu scalania powoduje jeszcze dziwniejsze zabarwienie niż obraz I połączone, przy czym: conflictStart jest odpowiednio podświetlone; ||||||| część conflictMiddle na czerwono, ale reszta linii na niebiesko, tak jak powinna; ======= na czerwono; linia >>>>>>> .* na żółto (tam, gdzie pojawił się żółty, nie ma żółtego); a reszta pliku, która nie powinna być ' częścią konfliktu w ogóle na zielono, nadal jest odbierana jako conflictEnd zgodnie z funkcja SynStack() z stackoverflow.com/questions/30247603
  • Podobnie, używając rzeczywistego scenariusz scalania, jeśli skopiuję / wkleję zawartość do nowego pliku, jest on wyświetlany zgodnie z oczekiwaniami, ale po zapisaniu ' i ponownym uruchomieniu Vima wyświetla się nieprawidłowo.
  • W rzeczywistym scenariuszu scalania możesz wyłączyć oryginalne zabarwienie różnic za pomocą :diffoff, pozostawiając tylko typ pliku ' s podświetlanie składni. Zagram trochę, aby zobaczyć Twój pierwszy przypadek.
  • Potwierdź, przepraszam, zapomniałem, że zostawiłem zainstalowaną wtyczkę konfliktu_marker po wypróbowaniu jej przed moim postem, co powodowało konflikt i powodowało problem. Usuwam to i nie mam już tego problemu.

Odpowiedź

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *