Captura de pantalla del comando Vim

01-12-2016


Vim, ohh, Vim. Es un editor de texto que se utiliza desde terminal, una versión mejorada del editor de texto Vi, presente en todos los sistemas UNIX. Tiene una curva de aprendizaje elevada, pero cuando se domina, puede aumentar la productividad. En esta entrada, se comentan las operaciones básicas para “Buscar y reemplazar”.

Vim dispone de distintos modos de trabajo, en este artículo se comentan los siguientes: “comando”, “insertar” y “línea de ordenes”:

  • Modo comando: Modo por defecto o también conocido como normal. Siempre se puede volver a este modo pulsando dos veces la tecla “Escape”.

  • Modo insertar: Se utiliza para editar el texto. Se accede desde el modo comandos pulsando la tecla “i”.

  • Modo línea de ordenes: Se accede desde el modo comandos pulsando la tecla “:” y a continuación la orden. Modo desde donde se van a realizar las acciones “Buscar y reemplazar”:
    • Buscar las apariciones de la cadena “foo” y reemplazarlas por “bar”, en todo el texto:

    • :%s/foo/bar/g


    • Buscar las apariciones de la cadena “foo” y reemplazarlas por “bar”, solo en la línea actual:

    • :s/foo/bar/g


    • También se pueden utilizar expresiones regulares. Por ejemplo, se procede a resolver el siguiente problema:

      Suponiendo que se dispone del siguiente texto:

      <color name=“Green”>#008000</color>
      <color name=“Black”>#000000</color>
      <color name=“White”>#FFFFFF</color>

      …(muchos colores)

      Y se quiere transformar a:

      <item>@color/Green</item>
      <item>@color/Black</item>
      <item>@color/White</item>

      Los pasos para realizarlo, de forma relativamente rápida son:

      • Paso 1:

        :%s/.*=//g


        Dando como resultado:

        “Green”>#008000</color>
        “Black”>#000000</color>
        “White”>#FFFFFF</color>

      • Paso 2:

        :%s/>.*//g


        Dando como resultado:

        “Green”
        “Black”
        “White”

      • Paso 3:

        :%s/“//g


        Dando como resultado:

        Green
        Black
        White

      • Paso 4:

        :%s/.*/<item>@color\/&<\/item>/g


        Dando como resultado:

        <item>@color/Green</item>
        <item>@color/Black</item>
        <item>@color/White</item>

  • Quedando resuelto el problema planteado.
    También se puede ver la solución del problema en video: https://youtu.be/5LAnylEZRQc

Seguro que existe una expresión regular para resolverlo con una única orden, pero es una introducción básica y por tanto se resuelve de forma básica. Si dispones de la expresión regular que lo resuelve, te invito a que la compartas en nuestra cuenta de Twitter @tocappcom

Acerca del autor

Soy un apasionado de los juegos simples, casual, minimal y experimentales.