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
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:
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 jakoconflictEnd
zgodnie z funkcjaSynStack()
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ź
- konflikt-marker.vim może podświetlać same znaczniki; oferuje również skoki i sposoby ich rozwiązywania.
- moja własna wtyczka ConflictDetection wykrywa i podświetla całe sekcje (poprzez podświetlanie składni); towarzysząca wtyczka ConflictMotions oferuje ruchy i polecenia rozwiązania.
xyz
zwykle nie byłoby podświetlone, ale ponieważ ' s między<<<<<<<
a|||||||
Chciałbym, żeby to było wyróżnione.