czasami moje globalne podteksty nie zastępują wszystkich dopasowań w linii. Potwierdza to fakt, że widzę to, gdy dokonuję podstawień z potwierdzeniem, dopasowanie znajduje się w linii z wieloma możliwymi dopasowaniami, ale potem przechodzi do innej linii.
Używam parametrów g
lub gc
działających na całym pliku za pomocą %
.
W tym pliku:
hello hello
hello
hello hello hello
hello
Jeśli robię %s/hello/goodbye/g
mam
goodbye hello
goodbye
goodbye hello hello
goodbye
Wszystko, co mam .vimrc
o wyszukiwaniu / zamianie, to
set hlsearch
set ignorecase
set incsearch
substitute
Nicolas Scotto Di Perto
źródło
źródło
vimrc
.:echo &gd
i co się stanie, jeśli dodasz drugąg
flagę w ten sposób:%s/hello/goodbye/gg
lub jeśli usunieszg
flagę całkowicie? Jeśli wyjście:echo &gd
jest1
, spróbuj dodaćset nogdefault
na końcu swojegovimrc
.set nogdefault
tak, jak powiedziałeś, a przy okazji działa teraz. Dziękuję Ci!Odpowiedzi:
Może ty lub wtyczka włączyliście tę opcję
'gdefault'
. Ta opcja dodaje flagęg
automatycznie za każdym razem, gdy wykonasz zamianę.Tak więc, kiedy ręcznie dodajesz flagę,
g
gdy'gdefault'
jest włączona, to tak, jakbyś miał 2g
flagi, które mają taki sam efekt jak żadna. Dlatego Vim zastępuje tylko pierwsze wystąpienie wzorca w każdej linii.Domyślnie opcja ta jest wyłączona, ale aby upewnić się, że można dodać na końcu
vimrc
:set nogdefault
.Alternatywnie, jeśli podejrzewasz, że wtyczka mogła włączyć tę opcję, możesz ją wyśledzić za pomocą:
verb set gd?
Lub możesz przyzwyczaić się do tej opcji, co oznacza, że gdy chcesz zastąpić wszystkie wystąpienia wzorca, nie dodajesz
g
flagi (ponieważgdefault
już to zrobiłem), a gdy chcesz tylko podstawić 1 wystąpienie wzorca w linii dodajeszg
flagę (ponieważ 2g
flagi są takie same jak brak).źródło