vi es el $EDITOR
En el trabajo se empeñan en seguir ignorando la realidad: vi es el editor, cualquier reemplazo (que no sea EMACS
) es simplemente insuficiente ;).
Ya comenté el otro día que uso mail(1) para leer el correo en el servidor, aunque los correos los escribo realmente con vi
(en la entrada de un mensaje, el comando ~v
).
Vamos a repasar un poco por encima algunas características básicas que, por desconocimiento, suelen limitar a la gente cuando emplea este editor de textos tan útil administrando sistemas.
En primer lugar hay que saber usar marcadores (markers), porque sin ellos no podremos sacar partido a la mayoría de las operaciones, por ejemplo, de copia & corta.
Los marcadores se ponen en lineas ejecutando en modo comando: mx
, donde la x es el nombre de la marca. Podemos usar cualquier caracter como marca, y las operaciones que podemos hacer son: 'x
para desplazarnos al primer caracter no blanco de la linea con la marca x, y `x
para ir al comiendo de la linea.
Si tenemos en cuenta que a las operaciones de cortar (d) y copiar (y) les podemos indicar un rango, ya somos capaces de hacer la mayoría de las cosas que la gente no suele saber hacer con vi
:).
Por ejemplo: no situamos en la linea donde comienza el texto que queremos copiar y pulsamos ma
. Nos vamos a la última linea de nuestro objetivo y pulsamos 'ay
(el editor nos llevará a la linea de la marca). Nos vamos a donde queremos pegar, y pulsamos P
(pegamos el buffer por defecto).
Si no decimos nada, el editor usará siempre el mismo buffer para estas operaciones, pero podemos usar otros con "x
, siendo x el nombre del buffer.
Otro ejemplo, supongamos el texto:
eran... uno dos tres
Ejecutamos estando en la primera linea "aY
(usa el buffer a para copiar). Nos situamos en la segunda y ponemos una marca ma
, y copiamos una linea más abajo con "by'a
(usa el buffer b para copiar desde el marcador a). En este punto tenemos dos buffer con texto: a
y b
.
Vamos al final del fichero (con G
, es lo suyo :D) y pegamos los dos: "ap"bp
, obteniendo lo siguiente:
eran... uno dos tres eran... uno dos
En verde vemos el contenido del buffer a
y en azul el del buffer b
. Veamos si es cierto con :display buffers
(pulsamos intro, que es un comando de ex
):
********** b (line mode) uno dos ********** a (line mode) eran...
Entiendo que el problema de vi
es su curva de aprendizaje, que es demasiado parecida a una recta vertical :D, pero cuando nos hacemos con el funcionamiento básico, resulta mucho más sencillo realizar tareas avanzadas.
A ver cuando tengo un rato y explico como emplear combinaciones de teclas sin uso en el editor para realizar tareas repetitivas (formatear texto, citar, des-citar, esas cosas que hacemos cuando escribimos correos electrónicos :P).
Ah, y para programar también vale ;).
Hay 12 comentarios
Buena entrada.
Lo de los buffers está bién, pero me olvido de lo que contienen si tengo más de uno (el portapapeles de jugete de windows me ha hecho mucho daño, y mi memoria está a un paso de ser la del prota de Memento)... a decir verdad, con uno sólo buffer también me olvido.
Por otro lado, como prefiero el modo visual (V) para seleccionar rangos, tu secuencia:
gg"aYjmaj"by'aG"ap"bp
me quedaría más breve:
ggVyGp''jVjyGp
Aunque para hacer scripts reconozco que poder manejar y tener identificados varios buffers es bastante útil.
PD: Que feas quedan las instrucciones puestas así seguidas :)
Una gran verdad.. VI es el EDITOR.
Uso VIM desde hace un porrón de años en el desarrollo de aplicaciones web PHP y en sistemas BSD....
.. yo con VIM y toda la empresa con Dreamweavers, Zends... casi siempre te has de convertir en un auténtico comercial del VIM para justificar su uso.. a la gente q no lo acepta (los Guindows users) lo critican.
Nótese MUCHO la diferencia entre el VI a pelo, o el NVI (del BSD) o el super VIM... muchos usuarios linux sólo disponen del VIM aunque ejecutado en modo compatibilidad... se confunde con frecuencia pero no es lo mismo.
Para el desarrollo de software con decenas de miles de lineas.. VIM vale (tienes infinidad d plugins, colores, etc.), el VI a pelo es más durillo.
Saludos.
La verdad es que me da pereza explicar estas cosas, porque está todo muy bien documentado. De hecho, con una refcard de esas que alguna vez he comentado por aquí, suele ser más que suficiente.
Por otra parte, siempre es más fácil de entender y se quedan mejor las cosas cuando las lees explicadas y en castellano... así que igual me animo. Pensaba explicar las teclas rápidas que uso para escribir correos, así que igual amplio un poco y repaso algunas cosas que me son útiles en el día a día.
recién descubro este blog y quiero felicitarlos por la iniciativa de defender y popularizar el vi/m, una herramienta genial que permitiría trabajar infinitamente mejor a tanta gente si sólo se tomaran el trabajo de quitarse los bloqueos mentales y se animaran a aprenderlo.
por mi parte acoto que siempre me dio fiaca aprender a usar el Yank (cut and paste de vi) así que me las arreglo bien de este modo: después de marcar el bloque de interés (en mi nomenclatura la primera línea es ma y la última mz) voy a donde quiero pegar y hago:
:'a,'zm. (mover) o bien: :'a,'zt. (copiar) o bien si ya sé que quiero mover a la línea 65, parado desde cualquier lado: :'a,'zm65 (t en lugar de m si quiero copiar) o bien para mover al principio del archivo: :'a,'zm0 o bien para mover al final: :'a,'zm$abrazos para todos!
Buena referencia :)
Pero... esos son comandos de ex, de los que quiero hablar cuando explique como programar acciones complejas para ejecutar con teclas rápidas desde vi.
En realidad si nos ponemos siempre habrá alguien que sepa hacer algo mágicamente que no sabemos hacer o llevamos a cabo con muchas más pulsaciones de teclas :P
Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.
por Ed, en 2007-02-02 19:29:23 ∞