Globalne podstawienie Vima nie zastępuje wszystkich dopasowań w linii


12

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 glub gcdziałających na całym pliku za pomocą %.

W tym pliku:

hello hello
hello
hello hello hello
hello

Jeśli robię %s/hello/goodbye/gmam

goodbye hello
goodbye
goodbye hello hello
goodbye

Wszystko, co mam .vimrco wyszukiwaniu / zamianie, to

set hlsearch
set ignorecase
set incsearch

3
Podaj nam przykład ze świata rzeczywistego i pokaż nam swoje vimrc.
romainl

2
Jaki jest wynik :echo &gdi co się stanie, jeśli dodasz drugą gflagę w ten sposób: %s/hello/goodbye/gglub jeśli usuniesz gflagę całkowicie? Jeśli wyjście :echo &gdjest 1, spróbuj dodać set nogdefaultna końcu swojego vimrc.
user9433424 16.04.16

1
W porządku! Nie wiem dlaczego, ale domyślnie było ustawione na 0, więc dodałem set nogdefaulttak, jak powiedziałeś, a przy okazji działa teraz. Dziękuję Ci!
Nicolas Scotto Di Perto

Odpowiedzi:


12

Może ty lub wtyczka włączyliście tę opcję 'gdefault'. Ta opcja dodaje flagę gautomatycznie za każdym razem, gdy wykonasz zamianę.

Tak więc, kiedy ręcznie dodajesz flagę, ggdy 'gdefault'jest włączona, to tak, jakbyś miał 2 gflagi, 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 gflagi (ponieważ gdefaultjuż to zrobiłem), a gdy chcesz tylko podstawić 1 wystąpienie wzorca w linii dodajesz gflagę (ponieważ 2 gflagi są takie same jak brak).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.