Odpowiedzi:
:g/xxxx/d
Spowoduje to usunięcie wszystkich linii ze wzorem i poinformowanie o liczbie usuniętych. Cofnij, aby odzyskać je później.
Sposób jest
:% s / wzór // gn
Potrzebujesz n
flagi. Aby policzyć słowa, użyj:
:%s/\i\+/&/gn
i konkretne słowo:
:%s/the/&/gn
Zobacz count-items
sekcję dokumentacji.
Jeśli po prostu wpiszesz:
%s/pattern/pattern/g
wtedy linia statusu poda również liczbę dopasowań w vi.
(podobnie jak powiedział Gustavo, ale dodatkowo :)
W przypadku każdego wcześniejszego wyszukiwania możesz po prostu:
:%s///gn
Wzorzec nie jest potrzebny, ponieważ znajduje się już w rejestrze wyszukiwania ( @/
).
"%" - wykonaj s/
w całym pliku
"g" - przeszukaj globalnie (z wieloma trafieniami w jednej linii)
"n" - zapobiega jakiejkolwiek zamianie s/
- nic nie jest usuwane! nic nie może zostać cofnięte!
(zobacz: :help s_flag
więcej informacji)
(W ten sposób doskonale współpracuje z „ Wyszukaj wizualnie wybrany tekst ”, jak opisano w vim-wikia tip171 )
posługiwać się
:% s / wzór / \ 0 / g
gdy ciąg wzorca jest za długi i nie chcesz go wpisywać ponownie.
Krótka odpowiedź :
:% s / ciąg-do-przeszukiwania // gn
Do nauki :
Istnieją 3 tryby w edytorze VI, jak poniżej
:
wchodzisz Command
w Command-line
tryb od do . Teraz cokolwiek piszesz, :
znajduje się w CLI (interfejs wiersza poleceń)%s
określa wszystkie linie. Określenie zakresu jako %
środków powoduje podstawienie w całym pliku. Składnia podstawiania wszystkich wystąpień to:%s/old-text/new-text/g
g
określa wszystkie wystąpienia w wierszu. Za pomocą g
flagi możesz zastąpić całą linię. Jeśli ta g
flaga nie jest używana, tylko pierwsze wystąpienie w linii zostanie zastąpione.n
określa liczbę wystąpień //
podwójny ukośnik oznacza pominięcie replacement text
. Ponieważ po prostu chcemy znaleźć.Po uzyskaniu liczby wystąpień możesz nacisnąć N
klawisz, aby wyświetlić wystąpienia pojedynczo.
Aby znaleźć i policzyć w określonym zakresie linii od 1 do 10:
: 1,10s / cześć // gn
%
że cały plik jest zastępowany ,
oddzielnymi numerami wierszy. W celu znalezienia i zastąpienia w określonym zakresie linii od 1 do 10:
: 1,10s / helo / hello / gn
Proponuję zrobić:
*
aby wykonać „wyszukiwanie ograniczone” dla tego, co jest pod kursorem, lub przeprowadź standardowe /pattern
wyszukiwanie.:%s///gn
aby uzyskać liczbę wystąpień. Lub możesz użyć, :%s///n
aby uzyskać liczbę wierszy ze wystąpieniami.** Naprawdę mogłem znaleźć wtyczkę, która przy każdym wyszukiwaniu wyświetlałaby komunikat „dopasuj N z N 1 w N 2 liniach”, ale niestety.
Uwaga: nie daj się zmylić zawiłym sformułowaniem wyniku. Pierwsze polecenie może dać ci coś w rodzaju 4 matches on 3 lines
tego, co może ci dać drugie 3 matches on 3 lines
. Choć technicznie dokładny, ten ostatni jest mylący i powinien mówić „Dopasowanie 3 wierszy”. Tak więc, jak widać, naprawdę nigdy nie ma potrzeby używania tej drugiej (tylko „n”) formy. Otrzymasz te same informacje, jaśniej i więcej, korzystając z formularza „gn”.
:g/xxxx/d
) jest okropna, niebezpieczna i gorsza od innych na tej stronie. Odznacz to.