Podczas wyszukiwania wyróżniłem ciąg, który chcę zmienić. Teraz chcę zastąpić tylko podświetlony tekst. Używam n
do przejścia do następnej instancji ciągu wyszukiwania. Myślałem, że mogę coś zrobić, ciw
ale to zmienia całe słowo, a nie tylko podświetlony tekst.
Znam się na tym, :%s/old/new/g
ale nie chcę zmieniać wszystkich instancji. Zamiast tego chcę przesunąć kursor do każdej instancji, a następnie zdecydować, czy ją zmienić.
gn
, więc oto podobna metoda, którą właśnie odkryłem:c//e<CR>FooBar<Esc>//<CR>
:%s/oldtext/newstuff/g
zmieni wszystkie dopasowaniaoldtext
nanewstuff
..
wiele razy, mogę użyć:%norm .
( źródło ).Jeśli szukałeś już słowa za pomocą
/word
lub?word
.Możesz użyć
:%s//newword/gc
do zastąpienia słowa, którego wcześniej szukałeśnewword
, pozostawiając wyszukiwane hasło (s//..
) puste.c
Flaga mówi, że każda zmiana powinna być potwierdzona poprzez naciśnięciey
na Tak lubn
na nie.Spójrz na
:help :s_flags
więcej informacji na temat flagi potwierdzenia.źródło
l
,a
iq
(lub<Esc>
) na różne sposoby, aby zakończyć cykl potwierdzenia.Metoda nr 1
Możesz skorzystać z mapowania
gn
igN
zrealizować to, co chcesz.gn
wyszuka do przodu ostatnio używane wyszukiwane hasło i wizualnie wybierze dopasowanie.gN
robi dokładnie to samo, z wyjątkiem tego, że przeszukuje wstecz. W połączeniu z operatorem, takim jak np.c
, Operator zostanie zastosowany do dopasowania, na przykład jeśli twój ostatni ciąg wyszukiwania to „foo” i wpiszeszcgn
, będzie szukał następnego wystąpienia „foo”, usunie go i przejdzie w tryb wstawiania, aby wprowadzić tekst zastępczy.Aby uzyskać więcej informacji na ten temat, zobacz
:help gn
i:help gN
.Metoda nr 2
Możesz użyć
:substitute
polecenia zc
flagą. Zostaniesz poproszony o potwierdzenie każdej zamiany. Powiedzmy na przykład, że chciałeś zastąpić foo paskiem w całym pliku, ale chciałeś potwierdzić każdą zamianę:Więcej na ten temat można znaleźć w następujących tematach pomocy:
:help :s_flags
,:help cmdline-ranges
, i:help :substitute
.źródło