GNU/Linux >> Tutoriales Linux >  >> Linux

Editor Vi y Vim:12 potentes ejemplos de buscar y reemplazar


Foto cortesía:B Zedan

Este artículo es parte de la serie Vi / Vim Tips and Tricks en curso. Vim se menciona comúnmente como editor de texto, no como creador de texto. Por qué ? Porque pasamos mucho tiempo editando un texto existente que creando un texto nuevo. En la edición de texto, las sustituciones de texto/patrones se vuelven una parte vital.

En este artículo, repasemos cómo realizar funciones básicas y avanzadas de sustitución de patrones y texto en Vi y Vim Editor . Estas funciones se explican mediante 12 ejemplos de sustitución de texto muy prácticos y potentes .

Sintaxis de la sustitución de texto dentro del editor vim:

:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]


Las siguientes son tres banderas posibles.

  1. [c] Confirme cada sustitución.
  2. [g] Reemplace todas las apariciones en la línea.
  3. [yo] Ignorar mayúsculas y minúsculas para el patrón.

Ejemplo 1. Sustituir todas las apariciones de un texto con otro texto en todo el archivo

Este es el uso fundamental básico de la sustitución de texto dentro del editor Vi. Cuando desee reemplazar un texto específico con otro texto en todo el archivo, puede usar la siguiente secuencia.

:%s/old-text/new-text/g

  • %s – especifica todas las líneas. Especificar el rango como '%' significa hacer una sustitución en todo el archivo.
  • g – especifica todas las apariciones en la línea. Con la bandera 'g', puede sustituir toda la línea. Si no se usa esta bandera 'g', solo se sustituirá la primera aparición en la línea.

Ejemplo 2. Sustitución de un texto por otro texto dentro de una sola línea

Cuando desea que un texto específico se reemplace con otro texto dentro de una sola línea sin distinguir entre mayúsculas y minúsculas. Si no se especifica un rango, se realiza la sustitución solo en la línea actual. Con la bandera 'i', puede hacer que el texto de búsqueda sustituto no distinga entre mayúsculas y minúsculas.

:s/I/We/gi

Ejemplo 3. Sustitución de un texto por otro dentro de un rango de líneas

Con el rango, puede hacer que solo un rango de línea se vea afectado en la sustitución. Especificar 1, 10 como rango significa, hacer sustitución solo en las líneas 1 – 10.

:1,10s/helo/hello/g

Ejemplo 4. Sustitución de un texto por otro texto mediante selección visual de líneas

También puede seleccionar líneas específicas seleccionando visualmente esas líneas. Presione CTRL + V en el modo de comando, use las teclas de navegación para seleccionar la parte del archivo que desea sustituir. Presione ':' que se formará automáticamente como :'<,'> Luego puede usar el sustituto normal como

:'<,'>s/helo/hello/g

Ejemplo 5. Sustitución de un texto por otro texto solo el 1er X número de líneas

Usando el conteo en sustitución, si especifica el conteo N en la sustitución, significa hacer la sustitución en N líneas desde la posición actual del cursor. hacer sustitución en 4 líneas desde la línea actual.

:s/helo/hello/g 4

Ejemplo 6. Sustituir solo la palabra completa y no la coincidencia parcial

Supongamos que desea cambiar solo la palabra completa "su" a "ella" en el texto original que se menciona a continuación. Si realiza la sustitución estándar, además de cambiar él por ella, también cambiará Esto por Ther, como se muestra a continuación.

Sustitución estándar

Original Text: This is his idea

:s/his/her/g

Translated Text: Ther is her idea

Sustitución de palabras completas

Original Text: This is his idea

:s/\<his\>/her/

Translated Text: This is her idea

Nota: :debe encerrar la palabra con , lo que obligará a la sustitución a buscar solo la palabra completa y no una coincidencia parcial.

Ejemplo 7. Sustituya la palabra 1 o la palabra 2 por una palabra nueva usando una expresión regular

En el siguiente ejemplo, traducirá cualquier aparición de bueno o agradable y se reemplazará con asombroso.

Original Text: Linux is good. Life is nice.

:%s/\(good\|nice\)/awesome/g

Translated Text: Linux is awesome. Life is awesome.


También puede realizar sustituciones especificando una expresión regular. El siguiente ejemplo sustituye hey o hi por hai. Tenga en cuenta que esto no reemplaza las palabras "ellos", "esto".

:%s/\<\(hey\|hi\)\>/hai/g

  • \<– límite de palabras.
  • \| – “lógico o” (en este caso hey o hi)

Ejemplo 8. Búsqueda y reemplazo interactivos en Vim Editor

Puede realizar búsquedas y reemplazos interactivos usando el indicador 'c' en el sustituto, que le pedirá confirmación para realizar el reemplazo o para omitirlo como se explica a continuación. En este ejemplo, el editor de Vim hará una búsqueda global de la palabra 'impresionante' y la reemplazará con 'maravilloso'. Pero hará el reemplazo solo en función de su entrada, como se explica a continuación.

:%s/awesome/wonderful/gc

replace with wonderful (y/n/a/q/l/^E/^Y)?
  • y:reemplazará la palabra resaltada actual. Después de reemplazarlo, se resaltará automáticamente la siguiente palabra que coincidió con el patrón de búsqueda
  • n:no reemplazará la palabra resaltada actual. Pero resaltará automáticamente la siguiente palabra que coincida con el patrón de búsqueda
  • a:sustituirá automáticamente todas las palabras resaltadas que coincidan con los criterios de búsqueda.
  • l:esto reemplazará solo la palabra resaltada actual y terminará el esfuerzo de buscar y reemplazar.

Ejemplo 9. Sustitución de todas las líneas con su número de línea.

Cuando la cadena comienza con '\=', debe evaluarse como una expresión. Usando la función 'línea' podemos obtener el número de línea actual. Al combinar ambas funciones, la sustitución hace la numeración de todas las líneas.

:%s/^/\=line(".") . ". "/g


Nota: Esto es diferente de “:set number” donde no escribirá los números de línea en el archivo. Pero cuando usa esta sustitución, está haciendo que estos números de línea estén disponibles dentro del archivo de forma permanente.

Ejemplo 10. Sustituyendo un carácter especial por su valor equivalente.

Sustituyendo ~ con el valor de la variable $HOME.

Original Text: Current file path is ~/test/

:%s!\~!\= expand($HOME)!g

Translated Text: Current file path is /home/ramesh/test/

Puede usar la función de expansión para usar todas las variables predefinidas y definidas por el usuario disponibles.

Ejemplo 11. Modificar el número de secuencia en una lista numerada al insertar un nuevo elemento

Suponga que tiene una lista numerada como la siguiente dentro de un archivo de texto. En este ejemplo, supongamos que desea agregar una nueva línea después del artículo 2. Para ello, debe cambiar el número de todos los demás artículos en consecuencia.

vi / vim tips & tricks series
Article 1: Vi and Vim Editor: 3 Steps To Enable Thesaurus Option
Article 2: Vim Autocommand: 3 Steps to Add Custom Header To Your File
Article 3: 5 Awesome Examples For Automatic Word Completion Using Ctrl-X
Article 4: Vi and Vim Macro Tutorial: How To Record and Play
Article 5: Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin
Article 6: How To Add Bookmarks Inside Vim Editor
Article 7: Make Vim as Your Bash-IDE Using bash-support Plugin
Article 8: 3 Powerful Musketeers Of Vim Editor ? Macro, Mark and Map
Article 9: 8 Essential Vim Editor Navigation Fundamentals
Article 10: Vim Editor: How to Correct Spelling Mistakes Automatically
Article 11: Transfer the Power of Vim Editor to Thunderbird for Email
Article 12: Convert Vim Editor to Beautiful Source Code Browser


Se perdió el tercer artículo "Convierta a Vim en su IDE de Perl con el complemento perl-support.vim". Entonces, cuando desee
agregarlo, deberá cambiar el "Artículo 3" por el "Artículo 4", el "Artículo 4" por el "Artículo 5", hasta el "Artículo 12" por el "Artículo 13".

Esto se puede lograr con el siguiente comando de sustitución de vim.

:4,$s/\d\+/\=submatch(0) + 1/

  • Rango:4,$ – 4ª línea a la última línea.
  • Patrón para buscar:\d\+:secuencia de dígitos
  • Patrón a reemplazar:\=submatch(0) + 1:obtiene el patrón coincidente y le agrega 1.
  • Bandera:como no hay bandera, por defecto sustituye solo la primera aparición.


Después de ejecutar la declaración sustituta, el archivo se volverá así, donde podrá
añadir el tercer artículo.

vi / vim tips & tricks series
Article 1: Vi and Vim Editor: 3 Steps To Enable Thesaurus Option
Article 2: Vim Autocommand: 3 Steps to Add Custom Header To Your File
Article 4: 5 Awesome Examples For Automatic Word Completion Using Ctrl-X
Article 5: Vi and Vim Macro Tutorial: How To Record and Play
Article 6: Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin
Article 7: How To Add Bookmarks Inside Vim Editor
Article 8: Make Vim as Your Bash-IDE Using bash-support Plugin
Article 9: 3 Powerful Musketeers Of Vim Editor ? Macro, Mark and Map
Article 10: 8 Essential Vim Editor Navigation Fundamentals
Article 11: Vim Editor: How to Correct Spelling Mistakes Automatically
Article 12: Transfer the Power of Vim Editor to Thunderbird for Email
Article 13: Convert Vim Editor to Beautiful Source Code Browser

Nota:Compruebe que la sustitución cambió el 3 por 4, el 4 por 5 y así sucesivamente. Ahora podemos agregar una nueva línea mencionándola como Artículo 3, y no es necesario realizar ningún cambio manual.

Ejemplo 12. Sustituir los comienzos de oraciones con mayúsculas. (es decir, título en mayúsculas en todo el documento).

Al formatear un documento, también es importante hacer el caso del título. Se puede hacer fácilmente con sustitución.

:%s/\.\s*\w/\=toupper(submatch(0))/g

  • \.\s*\w – Patrón de búsqueda – literal. ( punto ) seguido de cero o más espacios y un carácter de palabra.
  • toupper:convierte el texto dado a mayúsculas.
  • submatch(0) – devuelve el patrón coincidente.

Texto antes de la sustitución:

Lot of vi/vim tips and tricks are available at thegeekstuff.com. reading
these articles will make you very productive. following activities can be
done very easily using vim editor.
        a. source code walk through,
        b. record and play command executions,
        c. making the vim editor as ide for several languages,
        d. and several other @ vi/vim tips & tricks.

Texto después de la sustitución (los cambios están en negrita)

Lot of vi/vim tips and tricks are available at thegeekstuff.com. Reading
these articles will make you very productive. Following activities can be
done very easily using vim editor.
        a. Source code walk through,
        b. Record and play command executions,
        c. Making the vim editor as ide for several languages,
        d. And several other @ vi/vim tips & tricks.

Lecturas recomendadas

Vim 101 Hacks, por Ramesh Natarajan . Soy un adicto a la línea de comandos. Entonces, naturalmente, soy un gran admirador de los editores Vi y Vim. Hace varios años, cuando escribí mucho código C en Linux, solía leer todos los consejos y trucos disponibles del editor Vim. Basado en mi experiencia con el editor de Vim, he escrito el libro electrónico Vim 101 Hacks que contiene 101 ejemplos prácticos sobre varias características avanzadas de Vim que lo harán rápido y productivo en el editor de Vim. Incluso si ha estado usando Vi y Vim Editors durante varios años y no ha leído este libro, hágase un favor y lea este libro. Se sorprenderá con las capacidades del editor Vim.

Impresionantes artículos del editor de Vim

Los siguientes son algunos tutoriales impresionantes del editor Vi / Vim que puede resultarle útil.

  • Tutorial de macros de Vi y Vim:cómo grabar y reproducir
  • Acelere el navegador Firefox con la funcionalidad Vim Editor usando el complemento Vimperator
  • Tutorial:haga de Vim su IDE de C/C++ con el complemento c.vim
  • Convierta Vim Editor en un hermoso navegador de código fuente para cualquier lenguaje de programación

Nota: Suscríbase a The Geek Stuff y no se pierda ningún futuro consejos y trucos para editores de Vi y Vim .


Linux
  1. Explicación de las diferencias entre los editores de texto Vi y Vim

  2. Guía del editor de texto ViM 101

  3. Uso de sed para buscar y reemplazar archivos de texto en Linux

  4. ReText:un potente editor de texto para Markdown y reStructuredText

  5. Ejemplos de manipulación de cadenas Bash:longitud, subcadena, buscar y reemplazar

Cómo buscar y reemplazar texto, palabra o cadena en un archivo

50 ejemplos simples y útiles del comando Buscar en Linux

Cómo encontrar y reemplazar texto en Vim

Editor Vi y Vim:5 ejemplos asombrosos para completar palabras automáticamente usando Ctrl-X Magic

3 poderosos mosqueteros de Vim Editor:macro, marca y mapa

Trabajar con el editor Vim (Editor de texto)