1 de 6
http://www.speccy.org/websromero/linux/vim-tut.html
Usar VIM (el editor). Vim es el típico editor que todos queremos usar cuando seamos mayores. En partícular parece bastante complicado al principio pero cuando lo usas no puedes vivir sin él :) . Lo primero de todo es instalarlo: yo tengo los siguientes paquetes: vim-minimal-5.3-7 vim-enhanced-5.3-7 vim-X11-5.3-7 vim-common-5.3-7
Una vez instalados (vía rpm, dkpg, apt-get o lo que sea) lo primero que debemos hacer es crearnos un .vimrc en nuestro directorio HOME para que podais ir haciendo nuestras primeras pruebas (más adelante nos haremos .vimrc más complejos). Con vuestro (por poco tiempo) actual editor favorito creais un .vimrc en vuestro home que contenga lo siguiente (ya explicaremos qué hace cada cosa en su momento): " Mi .vimrc: Los comentarios empiezan por dobles comillas. set tabstop=3 set sw=3 set ai set sm set ruler set nocompatible set novisualbell set noerrorbells
Bien, salimos grabando y nos preparamos. El editor se arranca con vim <nombre_de_fichero> o con vim a secas si aún no hemos decidido qué abrir o qué crear. Una vez dentro, en VIM hay que diferenciar 2 modos de funcionamiento: modo de inserción y modo comando. En el modo de inserción VIM se comporta como un editor de texto "normal y corriente". Es decir, lo que tecleais lo meteis en pantalla en la posición actual del cursor, como el edit, el joe, etc. En el modo comando las teclas que se pulsan no se escriben en el texto sino que son comandos para que VIM haga cosas que nos faciliten el trabajo. En particular de momento hay que quedarse con 2 teclas: la tecla 'i' que permite que pasemos a modo inserción y la tecla ESC que hace que pasemos a modo comando. Inicialmente estamos en modo comando, de modo que pulsando i podemos introducir texto y pulsando ESC volvemos al modo comando (es muy útil estar casi siempre en modo comando a menos que estemos tecleando varios párrafos o líneas seguidas). Vamos a ver lo que hemos aprendido hasta ahora: ESC i
Pasar a modo comando. Pasar a modo inserción.
16/11/2008 17:30
2 de 6
http://www.speccy.org/websromero/linux/vim-tut.html
No sólo queremos introducir texto, queremos también movernos por él para subir arriba (por ejemplo) y corregir algo... para ello podemos movernos con las teclas de los cursores (arriba, abajo, izq, der) en modo inserción o comando (en ambos). En modo comando hay otras teclas de movimiento especiales para hacerlo compatible con el editor VI (en vi no se usan los cursores). Estas teclas son: h,j,k,l
Teclas de movimiento.
Bueno, supongamos que subimos un par de líneas del texto que en teoría deberíamos haber escrito :), y queremos añadir algo: pulsamos la tecla 'i' y escribimos lo que nos apetezca. Podemos borrar con SUPR o la tecla de borrado, o bien en modo comando con la tecla x. Ya sabemos pasar de modo comando a inserción y viceversa. También sabemos introducir texto y borrarlo. Ahora es el momento de aprender a grabar el fichero que hemos creado. En modo comando esto se hace con :w (pulsamos ESC, la tecla de ':' y luego la w, seguido de INTRO, y podremos ver como todo esto aparece en la barra de estado de abajo). También tenemos :x para salir grabando y :q! para salir sin grabar. Podéis abrir ficheros con ":e fichero", buscar cadenas con "/cadena", o insertar ficheros en la posición del cursor con ":r fichero". Por otra parte, también podéis aplicar filtros al texto completo o a un texto seleccionado (y esto es REALMENTE útil como veréis más abajo). Las macros también serán muy útiles (eso más adelante).
Resumen de teclas:
16/11/2008 17:30
3 de 6
http://www.speccy.org/websromero/linux/vim-tut.html
Probad los siguientes ejemplos:
Probad también a seleccionar un texto con 'v' y cuando esté seleccionado hacer : !sort (aparecerá algo como :'<,'>!sort ) y el comando se aplicará sólo al texto seleccionado. Como sabeis, dado que Linux tiene gran cantidad de mini-comandos que se aplican a la entrada estándar, con este método podeis hacer al texto LO QUE SEA, justificarlo, corregirlo con ispell, cualquier cosa que se os ocurra
Sobre terminales: Bajo XWindow he experimentado fallos con ciertas teclas (INICIO, FIN, CURSORES) bajo determinadas terminales (konsole, xterm). La única terminal que he conseguido que funcione todo correctamente, y que además ocupa muy poca memoria es wterm (recomendada infinitamente). Bajo consola no existe ninguno de estos problemas.
Fichero de configuración: .vimrc
16/11/2008 17:30
4 de 6
http://www.speccy.org/websromero/linux/vim-tut.html
Sobre ab, tiene una gran utilidad. Supongamos que vuestra página es http://www.ctv.es /USERS/sromero/linux/linux.html y estais hasta las narices de escribir esto en las news cada vez que alguien pregunta lo mismo en el ecol.misc (¿os suena? :). En ese caso poneis en vuestro .vimrc algo como: ab _mipagina http://www.ctv.es/USERS/sromero/linux/linux.html
Tras eso, las próximas veces que entreis en VIM cuando querais escribir la direccion de vuestra pagina, en modo inserción tecleais _mipagina y al darle a espacio tras esta cadena (es decir, no seguir escribiendo letras) VIM sustituye la cadena por la frase que viene después (la cadena de sustitución no puede tener espacios pero la frase posterior sí). Incluso podeis incluir comandos especiales dentro de ella (que simulen la pulsación de determinadas teclas) para por ejemplo incluir saltos de línea y por tanto cadenas con varias líneas. Esto se hace en modo inserción con CTRL+V y los comandos VI de bajar y subir líneas. Tambien se puede insertar simplemente como retorno de carro para modo insercion, etc. Ejemplo (cambiad las teclas <> por la pulsación de las mismas, todo esto en modo inserción): ab _prueba Linea 1
<ESC>jiLinea 2 ab _prueba2 Linea 1Linea 2
Esto funciona así: al teclear prueba VIM escribe "Línea 1", luego encuentra un ESC (pasar a modo comando) y luego los comandos 'j' (pasar a la siguiente línea, bajando el cursor) e 'i' (pasar a modo inserción). Finalmente escribe "Línea 2" en la posición del cursor (es decir, hemos introducido una macro de 2 líneas). El CTRL+V se usa para poder introducir una tecla especial en un texto (como el ESCAPE, el INTRO, etc). Hay otras macros útiles (sacadas de mi .rc y de la página de Ferkys): ab _guia http://www.ctv.es/USERS/sromero/guialinux/guialinux.html iab _hora =strftime("%H:%M") iab _fecha =strftime("%a %b %d %T %Z %Y") iab _ruler 1234567890123456789012345678901234567890123456789012(y más) ab _ecol es.comp.os.linux. ab _email compilerARROBAiname.com
16/11/2008 17:30
5 de 6
http://www.speccy.org/websromero/linux/vim-tut.html
ab _coment1 /*======================================================*/ ab
Como veis, uso macros para páginas, emails, reglas, comentarios de C, para crear páginas HTML, etc. Además pueden servir para autocorrección de errores comunes: iab Saludso Saludos
¡Pero aún no lo hemos visto todo! También tenemos el comando map, que es si cabe aún más útil. Este comando del .vimrc nos permite crear verdaderas macros de teclado (que no de sustitución) con las que hacer maravillas en modo comando. El formato de map es map tecla teclas
Donde 'tecla' es la tecla que pulsaremos en modo comando para ejecutar el comando, y "teclas" son las teclas que simulará nuestro comando. (Para introducir teclas especiales recordad que hace falta CTRL+V en modo inserción). Ejemplos: map <ESC>^I//<ESC>j
Visualmente (en el fichero) queda como: map ^[c ^[^I//^[j
Y lo que hace es: cuando pulsemos ALT+C, se ejecuta ESC (pasar a modo comando), seguido de ^ (comando para ir al inicio de una línea), seguido de 'I' (pasar a modo inserción), seguido de // (en modo inserción esto se escribe al principio de la línea, donde estamos gracias a ^), seguido de ESC (pasar a modo comando) y 'j' (avanzar a la siguiente línea). Es decir, gracias a esta macro pulsando ALT+C podemos comentar con // cualquier línea de código C y que automáticamente se avance a la ste línea. Podemos hacernos también macros para comentar en programación de shell bash (poniendo #), quotear texto en mensajes (poniendo > y asignándoselo a la tecla ALT+Q, con "map ^[q ^[^I>^[j" ), etc. Si mirais la documentación de mutt podreis ver que también es posible usar nombres para las teclas, como , <ESC>, etc. Otro ejemplo de macros son para justificar párrafos automáticamente. Instalad par (formateador de textos) en vuestro sistema y añadid esta macro: map º {!}par 70j^M}
(recordad que ^M = CTRL+V y ENTER)
Ahora escribid algo, pulsad º en modo comando y será automáticamente formateado y justificado a 70 columnas. Par es inteligente y también dejará los > al principio de las líneas correctamente (aunque este sistema es sólo para párrafos). Más ejemplos (probadlos en casa):
16/11/2008 17:30
6 de 6
http://www.speccy.org/websromero/linux/vim-tut.html
Por último, para programadores, probad un "syntax on" en el fichero de configuración. Para cambiar los colores id a /usr/share/vim/syntax editando c.vim, asm.vim, etc. y syntax.vim.
Finalizando: Este tutorial es una simple guía a los comandos más básicos que os podeis encontrar en VIM. De hecho tiene tantas cosas que si se domina VIM la edición de textos es casi un chiste :) ... para más información visitad la página VI Lovers (http://www.thomer.com /thomer/vi/vi.html) o el tutorial de *puntero_loco y Ferkys. También hay bastante info en http://www.vim.org. No os olvideis de man vim ni de /usr/doc/vim.
(c) 2000 Santiago Romero aka NoP / Compiler.
16/11/2008 17:30