domingo, 1 de marzo de 2009

HAL y vim (V)

La cuesta mas empinada para el principiante está al comienzo. Son las teclas de movimiento, tratadas el día pasado. Hacerse con ellas no es cosa de unas horas ni de una semana. Pero a partir del momento en que se dominan el camino se allana y se empiezan a obtener las merecidas recompensas.

Para disponer de medios suficientes de edición, hace falta todavía dar un paso más en la escalada, antes de empezar a disfrutar del descenso.

La labor fundamental al editar es precisamente la introducción de texto. Sabemos que en Vim esto significa conmutar al modo de inserción. Es lógico pensar, tras descubrir la enorme cantidad de formas de movimiento posibles en Vim, que dispondremos también de un número amplio de opciones para insertar texto, aparte de la conocida orden 'i'. Habituarse progresivamente a aplicarlas en los casos que mejor convenga completará nuestra paleta de opciones elementales.

Estas ordenes se caracterizan por conmutar el modo de órdenes desde el que se ejecutan por el de inserción. Podemos clasificarlas según su ámbito de aplicación y según el efecto de su acción. Por "ámbito de aplicación" entendemos el nivel textual sobre el que repercuten. Habrá así órdenes que muevan el cursor un paso atrás o adelante y activen en ese punto el modo inserción, mientras que otras lo moverán al principio o al final de la línea o, incluso, crearán una línea anterior o posterior, antes de activar el modo inserción. Por "el efecto de su acción" entendemos el hecho de que la inserción implique o no modificación del texto ya existente. La mejor forma de comprender estas posibilidades es citar algunas de las órdenes de inserción, describir su uso y ver ejemplos de su aplicación:

  • Órdenes de inserción que no modifican texto:

    • Carácter:

      i
      Para insertar (insert) texto un carácter antes del cursor.

      a
      Para añadir (append) texto un carácter después del cursor.


    • Línea:

      I
      Para insertar texto al comienzo de la línea actual.

      A
      Para añadir texto al final de la línea actual.

      o
      Para abrir (open) una línea nueva antes de la línea actual e insertar texto allí.

      O
      Para abrir una línea nueva después de la línea actual e insertar texto allí.



  • Órdenes de inserción que modifican texto:

    • Carácter:

      s
      Para sustituir (substitute) el carácter bajo el cursor por cualquier otro texto.

      r
      Para remplazar (replace) el carácter actual por otro. Esta orden no es una orden de inserción en sentido estricto, puesto que no activa el modo de inserción: el reemplazo se produce sin salir del modo de órdenes. Sin embargo, su uso es tan común que la incluimos en esta sección.

    • Línea:

      S
      Para sustituir la línea actual por cualquier otro texto.


    • Cualquier objeto textual:

      c
      Para cambiar (change) cualquier objeto textual por cualquier otro texto. Se debe usar en combinación con otras órdenes, normalmente las teclas de movimiento vistas el día pasado. Por ejemplo:

      • cw Para cambiar la palabra actual.

      • c$ Para cambiar lo que hay desde el cursor hasta el final de la línea.

      • C (mayúscula) Para cambiar lo que hay desde el cursor hasta el final de la línea. Equivale a la orden 'c$'.

      • cc Para cambiar la línea actual. Equivale a la orden 'S'.



Veamos unos ejemplos de aplicaciones de cada una de las órdenes anteriores. En cada ejemplo, se presentan, por este orden: el texto inicial, donde la posición del cursor se designa mediante un guión bajo; la orden que se ejecuta, seguida del nuevo texto insertado (en cursiva) [el espacio se indica, cuando es necesario, mediante el signo '¶']; y el resultado final. El lector debería probar por sí mismo cada uno de los ejemplos:

# Insertar antes del cursor:
En un lugar de Mancha
-> ila¶
En un lugar de la Mancha


# Añadir después del cursor:
En un lugar de Mancha
-> a¶la
En un lugar de la Mancha


# Insertar al principio de la línea:
un lugar de la Mancha
-> IEn¶
En un lugar de la Mancha


# Añadir al final de la línea:
En un lugar de la
-> A¶Mancha
En un lugar de la Mancha


# Abrir una línea después de la actual:
En un lugar de la Mancha
-> ode cuyo nombre no quiero acordarme
En un lugar de la Mancha
de cuyo nombre no quiero acordarme


# Abrir una línea antes de la actual:
En un lugar de la Mancha
-> ODon Quijote:
Don Quijote:
En un lugar de la Mancha


# Sustituir el carácter actual:
En un lugar del Mancha
-> s¶la
En un lugar de la Mancha


# Reemplazar el carácter actual:
En un lugar dl la Mancha
-> re
En un lugar de la Mancha


# Sustituir la línea actual:
Bla bla bla
-> ccEn un lugar de la Mancha
En un lugar de la Mancha


# Cambiar desde el cursor hasta el final de la palabra:
En un lugar de la qjflsjf
-> cwMancha
En un lugar de la Mancha


# Cambiar desde el cursor hasta el final de la línea:
En un lugar qjflsjf jlwjeo lsjñoq
-> Cde la Mancha
En un lugar de la Mancha


Se habrá notado que en los ejemplos anteriores se prefirieron versiones de la orden 'c' ('cc' y 'C' en lugar de 'S' y 'c$', respectivamente. La orden 'c' para cambiar texto se usa con tanta frecuencia, que, en la caja de herramientas del autor, sus formas ampliadas han llegado a desplazar a las originales. De hecho, el autor prácticamente no usa otras órdenes de inserción directa que 'i' o 'I' para insertar texto, 'a' o 'A' para añadir texto; 'o' u 'O' para abrir líneas nuevas de texto; 'r' para remplazar un carácter y 'c', con su amplia gama de extensiones y combinaciones, para cambiar texto. En realidad, cinco órdenes diferentes con sus formas ampliadas y/o extendidas que se aprenden a manejar y a dominar en mucho menos tiempo de lo que pueda imaginar el lector.


Resumen:

  • Vim suministra una cantidad más que suficiente de órdenes para insertar texto directamente de forma rápida y muy flexible [Veánse las listas propuestas en el articulo para conocer una buena parte de ellas].

  • Las órdenes de inserción directa se diferencian, por el efecto sobre el texto ya escrito, en dos tipos: las que lo modifican y las que no lo modifican.

  • Las órdenes de inserción se aprovechan en gran medida del análisis textual que Vim realiza mientras editamos, proporcionando acceso a las clases de objetos que configuran el texto.

No hay comentarios:

Publicar un comentario