Secretos del texto en vim.

By | 3 octubre, 2013

Objetos de texto en Vim (como el maestro yoda lo usa).

texto en vim

En este articulo voy a mostrarte como manejar el texto en vim mas fácilmente.

Una de las ventajas que vim nos pone a disposicion es el modo en que ve el contenido del archivo que estamos editando.
Si bien para nosotros “el texto es texto”, para vim no es tan asi.

Vim entiende y trata el texto no como una simple cadena de caracteres como la mayoria de los editores, sino que lo “ve” como objetos.
Esto nos provee de varias ventajas frente a otros editores de texto. ¿Porque? pues porque al saber de que tipo de texto se trata vim puede manejarlo de diferentes maneras.

Imaginate que en tu editor de textos tenes que moverte entre parrafos enteros solamente, ¿que tan facil te resulta hacer eso?. Si tienes que usar el mouse ya pierdes tiempo, y si tienes que pulsar varias teclas tambien… En otro caso ¡Seguro que estas usando vim! 🙂

En este articulo no pretendo poner la tipica lista de super comandos de vim con lo que haces un monton de cosas, sino enseñarte que todas esas combinaciones no tenes porque aprenderlas de memoria ya que (aunque no lo parezca) tienen un sentido y un significado que no es para nada dificil de aprender.

Lo primero que necesitamos aprender es ver como vim identifica el texto para que podamos movernos mas facilmente sobre el.

Ok ok, eso ya lo se geniecillo… ¿y que con eso?, pues que vim usa las siglas
de esas palabras como comandos… 😛

Osea que si deseas moverte entre palabras, lo unico que tenes que hacer es presionar en
modo comandos la letra w (de word), si deseas ir una palabra hacia atras
presiona b (de back ), si deseas ir al final de una palabra simplemente presiona
e (de end). Aja! ¿y que pasa con las sentencias? pues para las sentencias y
parrafos vim tambien usa las siglas (pero de otra manera).

Simplemente quedate con el concepto de que te podes mover mas facilmente usando ( para las
sentencias y { para los parrafos por ahora… 🙂

Y de que me sirve saber todo esto?. Ya lo vas a ver no te impacientes…

Resulta que vim tambien usa siglas para referirse a los comandos mas usados,
siguiendo con las tablitas estas serian:


borrar = delete en ingles
copiar = yank en ingles
cambiar = change en ingles
buscar = find en ingles
visual = visual ¿impensable verdad?

mmm ya estas captando el concepto verdad?

Siguiendo con el ejemplo…

d para borrar.

c para cambiar.

y para copiar.

f para buscar una letra en la linea.

v para seleccionar.

Existen mas ordenes que no las listo aca para no salirnos demasiado de tema,
pero que son de mucha utilidad conocer.

Si presionas alguno de las ordenes anteriores vas a notar que no pasa nada
(excepto en la de seleccionar “v” y en la de buscar una letra “f“).

Esto pasa porque estas ordenes esperan que pulsemos una tecla de movimiento las
cuales pueden ser las que vimos arriba (w b e s p).

Por ejemplo si quisieramos borrar una palabra tendriamos que pulsar dw o cw si
deseamos cambiarla…

Pero aun hay mas asique no te apresures joven padawan…

vim-baby.jpeg

Los objetos de texto en vim tienen 2 modos de trabajar.

Estos 2 ¿nuevos? operadores le dicen a vim el ambito donde queremos realizar la operacion.

inner significa interior

a tiene varios significados pero para el caso significa incluyendo.

Osea que si tenemos esta linea.

>”Una linea de texto”<

y tecleamos la orden da” dentro de la linea se eliminaria todo el texto (junto con las comillas).
En caso contrario si tecleamos di” se eliminaria solamente el texto dentro de
las comillas pero no las comillas, quedando asi:

>< Comando ( da” )

>””< Comando ( di” )

De esta manera podemos formar comandos y recordarlos muy facilmente como vemos:

Ok ok pero si eso es todo te mato ¡quiero mas!! 🙂

mas.jpeg

Estas ordenes pueden hacerse tambien de forma explicita, por ejemplo:

¿y si deseo borrar una etiqueta html o xml como hago?

simple, supongamos la siguiente etiqueta:

<article>Mi articulo

Si nos posicionamos en alguna parte de la declaracion del div y ejecutamos dit
vim se va a dar cuenta de que lo que queremos borrar es todo lo que esta dentro
de del div dejandolo asi:

<div id=”contenedor”></div>

Por el contrario, si nos posicionamos en alguna parte de la declaracion del
article y ejecutamos dit vim va a borrar todo el contenido del articulo
dejandolo asi:

<div id=”contenedor”><article></article></div> ¿genial no?

mmmm y solo puedo borrar texto en vim? bahh…

Por supuesto que no solamente podes borrar texto en vim ¿de que serviria si fuera solo eso?

Con los comandos que aprendimos recien podemos borrar facilmente objetos de
texto, ahora si remplazamos la orden de eliminar d por la c de change la cosa
tomaria todavia mas color ya que no necesitariamos estar presionando i en cada
momento para pasar al modo insercion, y adivina que.. ¡Todo lo que vimos para
borrar se aplica para cambiar!!

Si desearamos cambiar una sentencia seria:

etc… y como te imaginaras todo el resto es igual.. 🙂

mmm hasta ahora me venis convenciendo… ¿pero que mas puede hacer con el texto vim?

Bueno, las ordenes de movimiento son siempre las mismas como te habras dado cuenta, (espero sino…)

w = word para moverse entre palabras.

b = back para ir al comienzo de una palabra.

e = end para ir al final de una palabra.

f = find para ir a la posicion del caracter que presionemos

s = sentence para referirse a la sentencia completa.

( para moverse desde donde estamos al comienzo de la sentencia.

) para moverse desde donde estamos al final de la sentencia.

{ para moverse al comienzo del parrafo

} para moverse al final del parrafo.

Y que pasaria si usaramos estos comandos de movimiento para seleccionar el texto en vim?, ¿funcionaria? ¡pues claro!

viw y vaw seleccionan una palabra (incluyendo o no los espacios segun sea i o a )

vip y vap seleccionan un parrafo completo.

vis y vas seleccionan una sentencia completa.

vi( y va( seleccionan una sentencia a partir de la posicion actual hasta el comienzo.

vi) y va) seleccionan una sentencia a partir de la posicion actual hasta el final.

vi{ y va{ seleccionan un parrafo a partir de la posicion actual hasta el comienzo.

vi} y va} seleccionan un parrafo a partir de la posicion actual hasta el final.

En el modo de seleccion, existe un operador que sirve para decirle a vim hacia
adonde orientar el cursor de seleccion, este operador es la o y con pulsarla
simplemente, veremos como vim cambia la orientacion del cursor para facilitarnos
seleccionar texto (muy util). 🙂

Y como te imaginaras, para copiar es el mismo rollo que con las demas
operaciones, asique te lo dejo a tu investigacion… 🙂

texto en vim Con este articulo pretendo aclararte un poco las dudas acerca de los objetos de
texto en Vim y mostrarte la manera sencilla de recordarlos. Como sabras quedaron muchos comandos (no tan relevantes para el tema) en el tintero, asique te aconsejo investigarlos y tenerlos siempre a mano para
asi poder editar texto en vim de una manera mas eficiente y rapida, aca te dejo algunos enlaces de interes que te pueden interesar sobre le tema,

Un pequeño manual sobre vim echo por la gente de hackxcrack muy recomendado

Un articulo sobre algunos comandos de vim (tambien recomendable)

Un tutorial interactivo para aprender vim (muy muy bueno)

Una guia de como instalar plugins facilmente en vim

Un tutorial de EasyMotion (para moverse fácilmente por el texto)

 

espero que no te hayas aburrido mucho y que lo hayas disfrutado leyendo tanto como yo
haciendolo. ¡Vimvenido a la fuerza! 🙂

Si te gusto el articulo, comentanos :)