Hace poco vi un comando sustituto donde el autor tenía el /
reemplazado por uno !
como este::s!abc!ABC!g
Traté de encontrar documentación sobre este uso, pero no pude encontrar nada relevante. Así que intenté experimentar solo y una vez más no pude descubrir la diferencia real entre los dos signos. Esto es lo que encontré:
- No es posible mezclar
!
y/
en un comando. Por ejemplo:s!abc/ABC
falla. - Puede ser útil usar
!
para evitar escapar/
de un patrón. Por ejemplo, si quiero reemplazar</
con%
puedo usar en:%s!</!%!g
lugar de:%s/<\//%/g
. - Parece que, en algunos casos, algunas expresiones regulares no funcionarán
/
y funcionarán correctamente,!
pero como no soy realmente un experto en expresiones regulares, no estoy seguro de eso.
Entonces mi pregunta es simple: ¿Cuál es la ventaja de usar !
un comando sustituto y cuándo debería decidir usarlo en lugar de /
?
substitute
statox
fuente
fuente
Respuestas:
De
:help :global
:Como ya ideó a partir de su experimentación, esto es para prevenir el llamado " síndrome del palillo inclinado ". Considera esto:
versus:
La segunda forma es obviamente mucho más legible.
Esta es la única razón por la que puede cambiar el delimitador; para que sea más legible para nosotros los humanos. A la computadora no le importa.
Por cierto, algunos otros programas son aún más flexibles,
sed
por ejemplo , en GNU puede usarlox
como delimitador si lo desea.sed sxaxbxg file
es el mismo quesed s/a/b/g file
.fuente
:%s@/home/martin/test@/home/jake/x@
, ya que la "grasa"@
hace que sea aún más fácil ver dónde comienzan / terminan las partes individuales de la declaración.:%s#/home/martin/test#/home/jake/x#
funciona aún mejor, pero eso es solo una opinión personal.