visual results occurrences multiple inside all regex vim replace

regex - occurrences - vim search results



Realice una búsqueda/reemplazo no regex en vim (6)

¿Has habilitado la magia?

:set magic

Al hacer search / replace en vim, casi nunca necesito usar regex, así que es un fastidio estar escapando constantemente de todo, ¿hay alguna forma de hacerlo predeterminado para no usar regex o hay un comando alternativo para lograr esto?

Como ejemplo, si deseo reemplazar < con &lt; , Me gustaría simplemente poder escribir s/</&lt;/g lugar de s//<//&lt/;/g


El problema se debe principalmente a la confusión sobre el papel de & en la cadena de reemplazo. La cadena de reemplazo no es un reg-ex, aunque tiene algunos caracteres especiales, como & . Puede leer sobre el papel de & en la cadena de reemplazo aquí :h sub-replace-special .

Sospecho que el principal problema para OP no necesariamente es escribir las barras invertidas adicionales, sino recordar cuándo se necesita una barra invertida y cuándo no. Una solución puede ser comenzar a utilizar "expresiones de reemplazo" cuando no esté seguro. (Ver :h sub-replace-expression .) Esto requiere poner un `/ = ''en la cadena de reemplazo, pero para algunas personas puede darte un control más natural sobre lo que se está sustituyendo, ya que al poner una cadena literal entre comillas simples obtendrás el cadena de reemplazo que desee. Por ejemplo, este sustituto hace lo que OP quiere:

:s/<//=''&lt;''/g



Pruebe Editar Buscar y reemplazar en la barra de menú.


Si quiere buscar literalmente, puede usar el átomo de /V regex. Esto casi hace lo que quiere, excepto que también necesita escapar de la barra invertida. Podrías definir tu propio comando de búsqueda, que buscaría literalmente. Algo como esto:

:com! -nargs=1 Search :let @/=''/V''.escape(<q-args>, ''//'')| normal! n

Y luego use: Search / foobar / baz

Para Substitute, podría después de un comando: Search simplemente usar

:%s//replace/g

desde entonces, Vim recogería implícitamente el último elemento de búsqueda y usaría el de reemplazo.

(Solo quiero darte algunas ideas)


Use esta opción:

set nomagic

Ver :help /magic