Czy można pokazać / ukryć wszystkie pasujące linie w vi lub Vimie? Nie wyróżniaj, ale pokazuj tylko te linie.
Na przykład mam tekst ze słowem słowo ERROR
. Jak sprawić, by pokazywał tylko wiersze zawierające ERROR
i jak tylko wiersze bez ERROR
?
Czy istnieje rozwiązanie bez usuwania wszystkich pasujących wierszy, a następnie po prostu cofania go?
Odpowiedzi:
Czy znasz
:global
polecenie? Czy to robi, co chcesz?i na odwrót:
lub równoważnie:
źródło
g<
aby zobaczyć ponownie, lub@:
jeśli nie masz uruchamiania i poleceń.Innym podejściem, w zależności od twojego przypadku użycia, byłoby użycie vimgrep i jego wyników w quickfix . Możesz wykonać następujące czynności:
:vimgrep pattern %
przeszuka bieżący plik i przeniesie Cię do pierwszego wyniku wyszukiwania. Co ważniejsze, wyniki są również umieszczane na „liście quickfix”.:copen
otworzy listę quickfix w oddzielnym oknie quickfix. Będziesz miał więc oddzielne okno ze wszystkimi liniami z twojego ostatniego vimgrepa. W oknie quickfix możesz nacisnąć klawisz Enter lub dwukrotnie kliknąć linię, aby przejść do odpowiedniej linii w oryginalnym pliku.:colder
pozwoli ci wrócić do starszych list quickfix (starszych wyników vimgrep). I:cnewer
przechodzi do nowszych wyników wyszukiwania.Zauważ, że lista quickfix jest również aktualizowana podczas pracy
:make
(dlatego nazywa się quickfix do naprawiania błędów). Z tego powodu istnieje również alternatywa dla listy szybkich poprawek, zwana „listą lokalizacji”. Aby go użyć zamiast użyć:lvimgrep
, a następnie użyć polecenia L-prefiksem zamiast poleceń C-prefiksem -:lopen
,:lolder
,:lnewer
.Oczywiście możesz zrobić o wiele więcej. Zobacz,
:help quickfix
aby uzyskać więcej informacji.PS, powiedziałeś, że nie chcesz metody, która usuwa linie, a następnie je cofa. Ale skoro zaznaczyłeś
g/ERROR
jako odpowiedź, pomyślałem, że wskazałbym szybką i nieprzyjemną metodęg!/ERROR/d
. Następnie możesz łatwo cofnąć to za pomocąu
. Również FYI, możesz to zrobić:set hlsearch
aby podświetlić wzorce dopasowane do:g
poleceń.źródło
Możesz użyć
wydrukować wszystkie wiersze z błędem
Jest też wtyczka Vima, którą widziałem wiele razy, ale nie używałem: foldsearch: zwiń linie, które nie pasują do podanego wzorca
źródło
Najlepszym sposobem na to jest->
Spowoduje to otwarcie listy dopasowań słowa kluczowego, a także wyświetlenie tylko pasujących wierszy w oknie quickfix.
Zastąp% ścieżką do pliku, jeśli nie bierzesz pod uwagę bieżącego pliku.
źródło
:vimgrep /something/g % | copen
działa świetnie. Również:g/<pattern>/d
może być używana do usuwania linii z wzorcaźródło
jeśli zdarzy ci się użyć,
fzf
możesz użyć::Lines
we wszystkich otwartych plikach:BLines
tylko w otwartym buforze:Rg [pattern]
za pomocąripgrep
źródło
Jakiś hackerski sposób na zrobienie tego:
źródło
Prawdopodobnie masz na myśli polecenie w less vi vim & / pattern /, które pokazuje linie zawierające / pattern / (jak grep).
źródło