Wydaje mi się, że zadziałaby tylko wtedy, gdy we wzorcu nie użyto „. *”
AK
10
Nie ma potrzeby powtarzania ciągu, po prostu zrób %s/string//ng.
slm
23
(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_flagwięcej informacji)
(W ten sposób doskonale współpracuje z „ Wyszukaj wizualnie wybrany tekst ”, jak opisano w vim-wikia tip171 )
:wchodzisz Commandw Command-linetryb od do . Teraz cokolwiek piszesz, :znajduje się w CLI (interfejs wiersza poleceń)
%sokreś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
gokreśla wszystkie wystąpienia w wierszu. Za pomocą gflagi możesz zastąpić całą linię. Jeśli ta gflaga 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ąć Nklawisz, aby wyświetlić wystąpienia pojedynczo.
Aby znaleźć i policzyć w określonym zakresie linii od 1 do 10:
: 1,10s / cześć // gn
Należy pamiętać, %ż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:
Wyszukaj albo za pomocą, *aby wykonać „wyszukiwanie ograniczone” dla tego, co jest pod kursorem, lub przeprowadź standardowe /patternwyszukiwanie.
Użyj, :%s///gnaby uzyskać liczbę wystąpień. Lub możesz użyć, :%s///naby 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 linestego, 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.Odpowiedzi:
Spowoduje to usunięcie wszystkich linii ze wzorem i poinformowanie o liczbie usuniętych. Cofnij, aby odzyskać je później.
źródło
Sposób jest
:% s / wzór // gn
źródło
Potrzebujesz
n
flagi. Aby policzyć słowa, użyj:i konkretne słowo:
Zobacz
count-items
sekcję dokumentacji.Jeśli po prostu wpiszesz:
wtedy linia statusu poda również liczbę dopasowań w vi.
źródło
:% s / string / string / g da odpowiedź.
źródło
%s/string//ng
.(podobnie jak powiedział Gustavo, ale dodatkowo :)
W przypadku każdego wcześniejszego wyszukiwania możesz po prostu:
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 )
źródło
posługiwać się
gdy ciąg wzorca jest za długi i nie chcesz go wpisywać ponownie.
źródło
Krótka odpowiedź :
Do nauki :
Istnieją 3 tryby w edytorze VI, jak poniżej
:
wchodziszCommand
wCommand-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 tag
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ęciereplacement 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:
%
ż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:
źródło
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ć drugie3 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”.źródło