martes, 23 de noviembre de 2010

VIM: Comandos Utiles en VIM II

En la entrada anterior ingrese algunos comandos esenciales para la utilización de VIM, hoy ampliaremos la cantidad de comandos que se pueden utilizar en este editor de texto.
  • dd : Borra la linea en la cual esta ubicado el cursor.
  • r : Remplaza el caracter sobre el cual esta posicionado el cursor.
  • ~ : Remplaza el caracter sobre el cual esta posicionado el cursor por una mayúscula si el caracter estaba en minúscula o a minúscula si el caracter estaba en mayúscula.
  • u : Deshace el ultimo cambio realizado en el documento.
  • [ctrl]+r : Rehace el ultimo cambio desecho.
  • Y : Copia el contenido de la línea en la cual se encuentra el cursor.
  • p : Pega el ultimo elemento cortado o copiado, es decir, se puede copiar la ultima linea borrada con "dd" o la ultima línea copiada con "Y". Es importante mencionar que esta copia se realiza en la línea siguiente a la ubicación actual de cursor.
  • G : Permite ir a la primera posición de la ultima línea del documento.
  • 1G : Permite ir a la primera posición de la primera línea del documento.
  • w : Permite avanzar desde una palabra al inicio de la siguiente palabra, es decir, se puede avanzar de una palabra a otra. "W" tiene el mismo efecto.
  • b : Permite retroceder desde una palabra al inicio de la misma palabra, es decir, se puede retroceder de una palabra a otra. "B" tiene el mismo efecto.
  • m : Crea una marca en el documento al inicio de la linea donde se encuentra el cursor. Ej. ma, esa posición queda marcada y el nombre de la marca es a.
  • ' : Permite regresar a la ubicación de una marca creada con anterioridad. Ej. 'a, se accede a la posición que contiene la marca a.
Este editor también permite realizar búsquedas sobre el documento, para esto se debe utilizar el caracter "/".
  •  /frase_buscada : Permite realizar una búsqueda sobre el documento.
  • n : Permite acceder a la siguiente posición donde se encuentra la palabra o frase buscada.
  • N : Permite acceder a la posición anterior donde se encuentra la palabra o frase buscada.
Es importante mencionar que VIM también permite realizar búsquedas con expresiones regulares.

Como se mencionó en la entrada anterior también se puede ejecutar comandos antecedidos por ":", a continuación se agregan nuevos comandos.
  • :%s/frase_buscada/frase_nueva/g : Permite sustituir una frase por otra en todo el documento. El "%" indica que la búsqueda se debe realizar en todo el documento, la "s" indica que la operación que se realizará es de sustitución, entre el primer y segundo "/" se ingresa la frase que se buscará, entre el segundo y el tercer "/" se ingresa la frase nueva y la "g" al final de la línea indica que si la frase se encuentra más de una vez en una línea, se remplaza todas las veces que se encuentre. Este comando también permite dividir la línea en varias partes, entregando la posibilidad de mezclar o acomodar el texto contenido en las líneas que cumplen con el patrón ingresado, como se puede observar en el siguiente ejemplo.
Ej.

Contenido Inicial del Archivo en VIM

 INSERT INTO `tabla` (`id`, `campo_1`, `campo_2`, `campo_3`, `campo_4`, `campo_5`, `campo_6`,  `campo_7`, `campo_8`, `campo_9`, `campo_10`, `campo_11`, `campo_12`, `campo_13`, `campo_14`) VALUES
(3708364, '61654760', '6609
61654760', 8, '', '0000-00-00 00:00:00', '', 2, '192.168.77.213', '7770', 'pahaoanae', 'dato_11', 'dato_12', NULL, NULL),
(3708362, '90
654795', '660990654795', 8, '', '0000-00-00 00:00:00', '', 2, '192.168.77.213', '7770', 'pahaoanae', 'dato_11', 'dato_12', NULL, NULL),

Expresión Regular para remplazar conservando algunos contenidos

 :%s/\(([0-9]*, '\)\([0-9]\)\([0-9]*\)\('.*'\)pahaoanae\('.*\),/\1\2\3\4\2-\3\5/

Contenido Final del Archivo en VIM

 INSERT INTO `tabla` (`id`, `campo_1`, `campo_2`, `campo_3`, `campo_4`, `campo_5`, `campo_6`,  `campo_7`, `campo_8`, `campo_9`, `campo_10`, `campo_11`, `campo_12`, `campo_13`, `campo_14`) VALUES
(3708364, '
61654760', '660961654760', 8, '', '0000-00-00 00:00:00', '', 2, '192.168.77.213', '7770', '6-1654760', 'dato_11', 'dato_12', NULL, NULL)
(3708362, '
90654795', '660990654795', 8, '', '0000-00-00 00:00:00', '', 2, '192.168.77.213', '7770', '9-0654795', 'dato_11', 'dato_12', NULL, NULL)

Aquí se debe indicar que todo lo que se encuentra entre los paréntesis antecedidos por el carácter de escape "\(...\)", en este caso los tres puntos, serán almacenados en la variable \1, siempre que sea el primer paréntesis utilizado, los siguientes continuarán con \2, \3 hasta un máximo de \9 variables.
  • :'a,'bs/frase_buscada/frase_nueva/g : Permite sustituir una frase por otra en el documento, entre dos marcas. Las "'a,'b" indica que la búsqueda se debe realizar entre las marcas "a" y "b" del documento, la "s" indica que la operación que se realizará es de sustitución, entre el primer y segundo "/" se ingresa la frase que se buscará, entre el segundo y el tercer "/" se ingresa la frase nueva y la "g" al final de la línea indica que si la frase se encuentra más de una vez en una línea, se remplaza todas las veces que se encuentra.
  • :'a,'bd : Se borran todas las líneas ubicadas entre las marcas "a" y "b". Las marcas "'a,'b" indica que las líneas que serán eliminadas deben estar entre las marcas "a" y "b", la letra "d" indica que la operación que se realizará es eliminar las líneas.
  • :set nosmartindent : Elimina la autoindexación en el documento.
  • :set smartindent: Agrega la autoindexación en el documento.

    "Gracias, por compartir tus conocimientos"

    1 comentario: