Jakiś czas temu widziałem, jak wykwalifikowany ninja vim to robi, ale nie mam pojęcia, jak zacząć.
A) Czy istnieje sposób na ustawienie koloru tła vims, aby kolejne linie o identycznej treści były podświetlane.
B) Jeśli ktoś wie, jak to zrobić, fajną poprawką byłoby, gdyby wyróżnianie odbywało się w kolejnych wierszach, ale uwzględniało tylko pierwsze słowo (nie całą linię).
Druga poprawka, jeśli podświetlanie może być skonfigurowane dla różnych kolorów, jest używana na podstawie liczby pasujących linii (lub słów zależnych od AB jest aktywne). Mamy więc tylko dwie kolejne linie, które pasują, potem zielone, 3-5 kolejnych linii, potem pomarańczowe, 6+, a następnie czerwone.
syntax-highlighting
highlight
Martin York
źródło
źródło
Odpowiedzi:
Następujące
match
zestawy wydają się działać dla (A):Wygląda na to, że kolejność jest tutaj kluczowa. Jeśli mecze
Low
lubMedium
sąCritical
późniejsze, są przejmowane przez ich luźniejsze wymagania i podobnie jakLow
wrtMedium
.Podświetlanie nie pojawia się natychmiast po dodaniu, powiedzmy, trzeciego lub szóstego wiersza duplikatu, ale po poruszeniu się po dodaniu. Nie jestem pewien, co dokładnie to powoduje.
W przypadku B wyobrażam sobie, że możesz zastąpić wyrażenie regularne:
Ogólnie rzecz biorąc, należy wymienić wszystkie
(.*)
z(\S+).*
i\1
z\1.*
, lub cokolwiek stanowi słowo dla Ciebie.źródło
Na początek oto wzorzec wyszukiwania, który pasuje do zduplikowanych linii (ignorując zmiany w wiodących białych znakach):
:help pattern
dostarczy więcej informacji na temat tworzenia takich wyrażeń regularnych:help syntax
pokaże ci, jak wziąć to wyrażenie regularne i przekształcić je w coś, co jest dla ciebie wyróżnioneNauka pisania skryptów składniowych może być trudna, więc dobrym rozwiązaniem krótkoterminowym jest zrobienie tego „w locie”, upewniając się, że
'incsearch'
jest ustawione tak, że wyszukiwania są podświetlone i mapuje klucz do wykonania powyższego wyszukiwania, tj.nnoremap <F5> /^\s*\(.\+\)\n\zs\(\s*\1\n\)\+<CR>
źródło
yy10p
na linii z pełnym wyrażeniem regularnym, a następnie wybranie części, które chcesz usunąć i uderzyćr<space>
. Może dodam polecenie „zamień wszystko oprócz zaznaczenia w tym wierszu spacjami”, aby nieco przyspieszyć.,r
a następnie połącz linie razem<space>
w trybie normalnym / wizualnym.