Ostatnio widziałem polecenie zastępcze, w którym autor /
zastąpił !
podobny::s!abc!ABC!g
Próbowałem znaleźć dokumentację na temat tego użycia, ale nie znalazłem nic istotnego. Próbowałem więc eksperymentować sam i po raz kolejny nie mogłem zrozumieć prawdziwej różnicy między tymi dwoma znakami. Oto, co znalazłem:
- To nie jest możliwe, aby wymieszać
!
i/
w poleceniu. Na przykład:s!abc/ABC
zawodzi. - Przydatne może być użycie,
!
aby uniknąć ucieczki/
wzoru. Na przykład, jeśli chcę wymienić</
ze%
mogę użyć:%s!</!%!g
zamiast:%s/<\//%/g
. - Wygląda na to, że w niektórych przypadkach niektóre wyrażenia regularne nie będą działać
/
i będą działać poprawnie,!
ale ponieważ tak naprawdę nie jestem ekspertem od wyrażeń regularnych, nie jestem tego pewien.
Więc moje pytanie jest proste: Jaka jest zaleta używania !
polecenia zastępczego i kiedy powinienem zdecydować się go użyć /
?
substitute
statox
źródło
źródło
Odpowiedzi:
Od
:help :global
:Jak już wymyśliłeś ze swoich eksperymentów, ma to na celu zapobieganie tak zwanemu „ zespołowi pochylonej wykałaczki ”. Rozważ to:
przeciw:
Druga forma jest oczywiście o wiele bardziej czytelna.
To jedyny powód, dla którego możesz zmienić ogranicznik; aby uczynić go bardziej czytelnym dla nas ludzi. Komputer nie dba o to.
Nawiasem mówiąc, niektóre inne programy są jeszcze bardziej elastyczne,
sed
na przykład w GNU możesz użyćx
jako separatora, jeśli chcesz.sed sxaxbxg file
jest taki sam jaksed s/a/b/g file
.źródło
:%s@/home/martin/test@/home/jake/x@
, ponieważ „gruby”@
sprawia, że jeszcze łatwiej jest zobaczyć, gdzie poszczególne części instrukcji zaczynają / kończą.:%s#/home/martin/test#/home/jake/x#
działa jeszcze lepiej, ale to tylko osobista opinia.