Sie sind auf Seite 1von 29

Editor de textos Vim

Material de estudio


Diego Cordoba

Junco TIC 1 www.juncotic.com


Temario
Editor de textos Vim....................................................................................................... 3
Un editor de textos modal.......................................................................................... 4
Instalación.................................................................................................................. 4
Uso básico del editor.................................................................................................. 5
Modos principales....................................................................................................... 6
Cambiando entre modos........................................................................................ 6
Guardando y saliendo del editor................................................................................. 7
Movimiento del cursor................................................................................................ 7
Eliminando/cortando texto......................................................................................... 8
Copiando.................................................................................................................... 8
Repitiendo comandos................................................................................................. 8
Insertando texto......................................................................................................... 9
Reemplazando texto................................................................................................... 9
Buscando texto......................................................................................................... 10
Búsquedas avanzadas.............................................................................................. 11
El modo "línea de comandos", o modo "ex".............................................................11
Límites en los comandos ex................................................................................. 12
Modo visual.............................................................................................................. 12
Macros...................................................................................................................... 15
Portapapeles............................................................................................................. 16
Múltiples archivos..................................................................................................... 18
Abriendo varios archivos...................................................................................... 18
Utilización de "tabs" o pestañas...........................................................................18
Dividiendo en paneles.......................................................................................... 20
Cambiando el tamaño...................................................................................... 21
Abriendo el Vim con paneles cargados.............................................................21
Deshaciendo cambios............................................................................................... 22
Plugins en Vim.......................................................................................................... 22
Vim Autocomplete: el auto-completado por defecto............................................22
Vundle: un genial administrador de plugins.........................................................23
.vimrc: Archivo de configuración de opciones de Vim para el usuario......................23
.vim/ : Directorio donde se almacena información local de Vim para el usuario,
incluidos los vim plugins........................................................................................... 23
Veamos entonces cómo instalar Vundle en Vim...................................................23
Y creamos el archivo “plugins.vim” dentro del ~/.vim de usuario, con el siguiente
contenido:................................................................................................................ 23
Instalando plugins: un ejemplo simple.................................................................24
Luego ejecutamos por terminal el siguiente comando para instalar Vundle:............24
O, alternativamente, podemos abrir el Vim y correr en modo ‘ex’:..........................24
Algunos Vim plugins interesantes.........................................................................25
Comandos de Vim Plugins.................................................................................... 25
Conclusiones: Vim Plugins.................................................................................... 26
Algunos comandos útiles.......................................................................................... 27
Comandos persistentes........................................................................................ 27
Lista de comandos útiles...................................................................................... 27
Editor de textos Vim
Material de estudio

Editor de textos Vim


Vim es un editor de textos altamente configurable para crear y cambiar cualquier
clase de archivo de texto en forma eficiente.
Es incluido como “vi” en la mayor parte de las distribuciones de GNU/Linux, Unix y
Apple OS X.
Vim es un editor súper estable y está siendo desarrollado continuamente para corregir
bugs y agregar mejoras.
Entre sus características podríamos nombrar las siguientes:
• Árbol de deshacer persistente y multinivel.
• Sistema extensivo de plugins.
• Soporte para cientos de lenguajes de programación y formatos de archivos.
• Potente mecanismo de búsqueda y reemplazo.
• Integrado con muchas utilidades en el sistema.

Aprender a utilizar Vim es de mucha ayuda para programadores, administradores de


sistemas, o usuarios finales que deseen editar y modificar archivos de texto desde la
terminal de comandos.
En este curso introduciremos los conceptos fundamentales de un editor modal como
Vim, los modos de trabajo, comandos disponibles, y configuraciones básicas, de modo
que puedas terminar aprendiendo y utilizando el editor de textos a diario en tus tareas
de desarrollo, administración y configuración de sistemas, o edición de cualquier
archivo de texto.

Junco TIC 3 www.juncotic.com


Editor de textos Vim
Material de estudio

Un editor de textos modal


Vim es un editor de textos modal, lo que significa que es un editor de textos en el que
debemos trabajar en diferentes modos de operación.
En los editores a los que podemos estar acostumbrados, editores gráficos, como gedit,
medit, geany, o incluso algunos editores de línea de comandos como edit o nano,
todos los caracteres que escribimos se imprimen en el archivo que estamos editando,
mientras que debemos ejecutar determinadas combinaciones de teclas, como Ctrl+X,
para llevar a cabo ciertas tareas.
Vim es un editor modal, por lo que disponemos de un modo edición, y un modo
comando. En el modo edición las teclas que presionemos se verán reflejadas en el
archivo, tal cual ocurre con los editores tradicionales. Mientras que en el modo
comando, las teclas representarán comandos específicos sobre el archivo. Por ejemplo,
si en el modo de edición presionamos “dd” escribiremos dos letras “d” en pantalla,
mientras que si abrimos un archivo y presionamos “dd” en modo comando,
eliminaremos la línea actual sobre la que estemos parados.
Por defecto, cuando abrimos Vim, estamos en modo comando, y debemos pasar a
modo edición para poder modificar el texto introduciendo caracteres.
Esto al principio parece complejo de manejar, y los estudiantes se preguntan ¿¡cómo
voy a hacer para recordar cada uno de los comandos!?
Esta pregunta tiene una respuesta: practica.
La práctica y uso frecuente del editor hace que los comandos resulten naturales al
uso, y un usuario habituado a trabajar con Vim puede editar archivos más
eficientemente que la mayoría de los editores tradicionales, puesto que las mismas
teclas que se utilizan para escribir texto también se utilizan para ejecutar comandos.
Por otro lado, Vim permite ejecutar comandos avanzados que configuren el entorno del
editor, y que permitan adaptar las características a determinados usos, como el
desarrollo y programación de aplicaciones, edición de textos científicos, etc.

Instalación
En prácticamente todas las distribuciones de sistemas GNU/Linux Vim está disponible
en los repositorios oficiales, por lo que podremos instalarlo con un simple comando.
Aquí algunos ejemplos:
• Distros DEB (Debian, Ubuntu, Mint, …): sudo apt install vim
• Distros RPM (RedHat, Fedora, Centos, …): sudo yum install vim
• Distros Arch (ArchLinux, Manjaro, …): sudo pacman -S vim
Para otros sistemas operativos, tales como Windows o MacOS, podemos descargar los
instaladores desde el sitio oficial del editor: https://www.vim.org/download.php
Una vez instalado, podemos ejecutarlo por línea de comandos invocando la orden
“vim” para abrir un documento nuevo, o “vim archivo” para abrir un archivo existente.

Junco TIC 4 www.juncotic.com


Editor de textos Vim
Material de estudio

En el caso de especificar un archivo, y que este no exista, el editor lo interpretará


como un documento nuevo, y cuando guardemos el contenido que hayamos escrito,
se creará el archivo en el disco del ordenador.

Uso básico del editor


Analicemos la pantalla principal del editor:

En esta pantalla se pueden ver varios detalles interesantes:


• El cursor aparece en la posición superior.
• En la primer columna se pueden ver los símbolos “~” (virgulilla, ñique o ñuflo).
Esto indica que el texto no pertenece al archivo que estamos editando. Por lo
general son líneas de relleno para completar la interfaz del Vim en archivos que
no disponen de muchas líneas.
• El texto del centro es una pantalla de bienvenida, no representa texto de un
archivo de textos que estemos editando (notar el “~” a la izquierda).
• La última línea de texto de la pantalla representa la barra de comandos, donde
al final (a la derecha” pueden verse los números de columna y línea en la que
tenemos posicionado el cursor e el momento actual. La palabra “All” indica que
estamos viendo todo el contenido del archivo (en este caso, no tiene
contenido). En archivos grandes ahí veremos el porcentaje del archivo que
hemos alcanzado al recorrerlo: con el cursor en la primer línea será 0%,

Junco TIC 5 www.juncotic.com


Editor de textos Vim
Material de estudio

mientras que con el cursor en la última línea será 100%.

Modos principales
Vim posee tres modos principales, a los que podemos agregar algunos adicionales
según podamos interpretar.
Los dos modos principales son:
• Edición: modo en el que los caracteres del teclado escriben caracteres en
nuestros archivos. Esto parece obvio al principio, pero mejor seguir leyendo el
siguiente modo :)
• Comando: en este modo los caracteres del teclado, y combinaciones de los
mismos, van a tener un efecto diferencial en nuestro texto. Por ejemplo, en
modo comando la presión de la tecla ‘Y’ copiará en el portapapeles de Vim la
línea actual en la que está posicionado el cursor.
• Modo “ex”: este modo permite ejecutar comandos más complejos, y
configurar diferentes aspectos de uso del propio editor, así como también
agregar plugins y ejecutar otras tareas. A este modo se accede desde el modo
comando mediante la presión del carácter “:”. Esto posicionará el cursor en la
línea inferior del editor para que podamos trabajar.
• Modos visuales: Vim dispone de algunos modos visuales (común, de línea, o
de bloque) que permiten seleccionar texto de un archivo de una manera simple
para poder trabajar con el. En el transcurso del curso veremos estos modos
trabajando.

Cambiando entre modos


Vim inicia automáticamente en modo comando, por lo que si queremos escribir,
debemos primero pasar a modo de edición.
Esto podemos realizarlo presionando la tecla Insert (INS) o la tecla “i” (veremos más
adelante que existen otras teclas, pero estas son las más utilizadas, por lo menos al
principio).
Al entrar en modo Edición vamos a ver en la parte inferior de la pantalla del editor la
leyenda “INSERT” o su equivalente en el idioma de origen.

Para volver a modo comando, simplemente presionamos la tecla “Escape / ESC”, con
lo que desaparecerá la leyenda.
Más adelante hablaremos específicamente de los modos “ex” y visual.

Junco TIC 6 www.juncotic.com


Editor de textos Vim
Material de estudio

Guardando y saliendo del editor


Para guardar el contenido del archivo podemos usar varias alternativas, todas en
modo comando.
• :w guarda el archivo con el nombre que se especificó al invocar al comando
“vim”.
• :w nombre guarda el archivo con un nuevo nombre, y se usa en el caso de no
querer sobrescribir el archivo original, o en le caso de no haber puesto un
nombre de archivo al invocar a Vim con un documento nuevo.
• :q Sale del editor cerrando el archivo en el caso de que no hayamos realizado
cambios. Si el archivo ha cambiado, mostrará una advertencia y no cerrará para
no perder los cambios.
• :wq sale del editor guardando los cambios.
• :q! sale del editor sin guardar los cambios (estos se pierden).
• :wq! Sale del editor guardando los cambios incluso en archivos para los que no
existe permiso de escritura y estamos trabajando como root/superusuario
(disponible para sistemas GNU/Linux).
• :x Idem a :wq
• ‘ZZ’ (dos letras zeta mayúsculas) en modo comando (no EX), es equivalente a
“:wq”.

Movimiento del cursor


El cursor de Vim puede moverse para recorrer el archivo utilizando varias teclas, entre
las que podemos encontrar:
• Las flechas del cursor: permiten mover el cursor dentro del texto.
• Las letras hjkl:
◦ h equivale a la flecha hacia la izquierda.
◦ j equivale a la flecha hacia abajo
◦ k equivale a la flecha hacia arriba.
◦ l equivale a la flecha hacia la derecha.
• w mueve el cursor una palabra hacia adelante
• b mueve el cursor una palabra hacia atrás
• ^ mueve el cursor hacia el primer carácter de la línea
• $ mueve el cursor hacia el último carácter de la línea
• G mueve el cursor hacia el último carácter del archivo
• gg mueve el cursor a la primera línea del archivo
• H mueve el cursor a la primer línea de la pantalla actual

Junco TIC 7 www.juncotic.com


Editor de textos Vim
Material de estudio

• L mueve el cursor a la última línea de la pantalla actual


• M mueve el cursor a la línea central de la pantalla
• Av. Pag. Mueve el cursor una página/pantalla hacia adelante. Equivale a Ctrl+f.
• Re. Pag. Mueve el cursor una página/pantalla hacia atrás. Equivale a Ctrl+b.
• Ctrl+d: mueve el cursor media página hacia adelante.
• Ctrl+u: mueve el cursor media página hacia atrás.

Eliminando/cortando texto
En Vim el concepto de cortar y el de eliminar están relacionados… casi podría decirse
que al eliminar contenido realmente lo estamos cortando, y nos queda disponible en el
portapapeles para pegarlo en otra ubicación del texto.
• x corta el caracter actual del cursor
• X corta el caracter anterior al cursor
• dw corta desde el cursor hasta el fin de palabra
• D corta desde el cursor hasta el final de la linea
• d0 corta hasta el principio de la linea (0=cero).
• d#G corta desde la linea hasta la línea nro # del archivo
• dd corta toda la linea
• dG corta desde la linea hasta el final del archivo
• dgg corta desde la línea actual hasta el principio del archivo
Luego, con la tecla “p” podemos pegar el contenido cortado/eliminado debajo de la
línea actual, mientras que “P” lo hace encima de la línea actual.

Copiando
Veamos ahora cómo podemos copiar contenido del archivo. Aquí las teclas “p” y “P” se
comportan igual que antes para pegar el contenido previamente copiado.
• yy o Y copia la linea actual en el portapapeles
• #yy o #Y copia las # lineas desde la actual hacia abajo

Repitiendo comandos
Vim permite ejecutar varias veces un mismo comando, en lo que se conoce como la
repetición de comandos, y es de por sí muy útil a la hora de trabajar con varias líneas.
Anteponiendo un número al comando a ejecutar (alguno de lo que vimos previamente,
por ejemplo), se ejecutará dicho comando cierta cantidad de veces.
Cabe aclarar que siempre se ejecutan en modo comando, y en ninguna parte de la

Junco TIC 8 www.juncotic.com


Editor de textos Vim
Material de estudio

interfaz vamos a ver el número presionado, por lo que si nos equivocamos, basta con
presionar ESC y volver a empezar :)
Veamos algunos ejemplos:
• 3dd corta 3 lineas desde la actual
• 4x corta 4 caracteres desde el actual
• 2p pega dos veces el texto del buffer o portapapeles
• 5yy copia 5 líneas desde la actual
• 6Y copia 6 líneas desde la actual, y equivale a 6yy
• 44k mueve el cursor 44 caracteres hacia la derecha (equivale a “44 →” )
• . (punto) repite el ultimo comando ejecutado

Insertando texto
Vim, como dijimos, permite acceder al modo edición con varias teclas, mencionamos a
la tecla Insertar, y a la tecla “i”… veamos qué efectos tienen:
• i pasa a modo insersión y permite agregar caracteres delante del carácter
actual.
• a idem a “i”, pero agrega caracteres después del carácter actual.
• I permite insertar caracteres al principio de la línea
• A permite insertar caracteres al final de la línea
• o abre una línea nueva debajo de la actual.
• O abre una línea encima de la línea actual.
En todos los casos queda el modo edición activado y listo para que escribamos.
De mas está decir que podemos volver al modo comando con la tecla Escape.

Reemplazando texto
Veamos ahora algunos caracteres para reemplazar texto:
• cw elimina desde el cursor hasta el final de la palabra y deja el editor en
modo edición.
• cc elimina la línea y deja el editor en modo edición
• C elimina desde el cursor hasta el final de la línea y deja el editor en modo
edición
• s elimina el caracter debajo del cursos y permite insertar
Todos estos comandos, como hemos dicho, dejan copia en el portapapeles del vim, por
lo que cuando hablamos de “eliminar” en realidad estamos “cortando” texto.
• r permite reemplazar el carácter actual en modo comando… así por

Junco TIC 9 www.juncotic.com


Editor de textos Vim
Material de estudio

ejemplo, si nos posicionamos en un carácter y presionamos “rx” vamos a


reemplazarlo por una “x”. El carácter de reemplazo puede ser cualquier… por
ejemplo, si presionamos r y luego damos Enter, reemplazaremos al carácter
actual por un salto de línea.
• R pasa a modo “reemplazo”, por lo que se verá en la barra inferior la
leyenda respectiva. En modo reemplazo, todo lo que escribamos irá
sustituyendo al texto anterior. Es el equivalente al clásico “sobrescribir” de los
procesadores de texto.
• J junta dos lineas, es decir, al final de la línea actual añade un carácter de
espacio, y luego inserta el contenido de la línea siguiente.
• ~ permite cambiar el carácter que se encuentra debajo del cursor de
mayúscula a minúsculas, y viceversa.
Todos estos comandos, al igual que los anteriores, pueden repetirse anteponiendo un
número que permita ejecutarlo cierta cantidad de veces.
Por ejemplo, 5J “juntará” las 5 líneas siguientes contando la línea actual, o 4ra
reemplazará el carácter que se encuentra debajo del cursor, y los siguientes 3, por la
letra “a”… o incluso 5~ cambiará el estado de mayúscula-minúscula del carácter
actual y los 4 siguientes (5 en total).

Buscando texto
Vim permite buscar un patrón de texto particular dentro de un archivo, y lo puede
hacer de varias formas.
“/palabra” permite buscar la palabra “palabra” hacia adelante en el texto. Al ejecutar
“/” en modo comando, veremos que el cursor se desplaza a la última línea de
comandos del editor. Al dar “enter” el cursor se moverá dentro del archivo de texto e
irá a posicionarse delante de la primer ocurrencia que encuentre de la palabra en
cuestión.
Presionando ahora la tecla “n” saltaremos a la siguiente ocurrencia de la palabra,
mientras que con “N” saltaremos a la anterior.
Ahora bien, como forma adicional de búsqueda, podemos usar el símbolo de
interrogación, “?”, en vez de la barra “/”, por lo que podremos buscar la palabra
“hola” utilizando la forma “?hola”. ¿Qué diferencia tiene con la búsqueda anterior?
Que esta forma busca hacia atrás por defecto, mientras que la anterior lo hace hacia
adelante.
Si iniciamos la búsqueda con “?”, las teclas “n” y “N” cambian también de
significado: ahora “n” buscará hacia atrás (en el sentido original de la búsqueda), y
“N” buscará hacia adelante (en sentido contrario a la búsqueda original).
Si hemos estado realizando búsquedas, al presionar “/” o “?” y mover las flechas del
cursor hacia arriba y abajo podremos ver búsquedas anteriores para repetirlas si es
necesario.

Junco TIC 10 www.juncotic.com


Editor de textos Vim
Material de estudio

Búsquedas avanzadas
Ahora bien, pueden utilizarse algunos caracteres especiales dentro de los para realizar
búsquedas más específicas. Veamos algunos ejemplos.

• /^texto Permite buscar las palabras “texto” que se encuentren al


inicio de una línea.
• /texto$ Permite buscar las palabras “texto” que se encuentren al final
de una línea.
• /c[ao]sa Permite buscar todas palabras “casa” y “cosa” dentro del
texto, utilizando la sustitución.
• /c[a-z]sa Permite buscar todas las palabras que empiecen con “c”, siga
un carácter de la “a” a la “z”, y terminen con “sa”.
• /[tT]exto Permite buscar las palabras “Texto” y “texto”… como “truco”
para obviar el “case sensitive” de Vim :)
• /[cC][a-z]sa Idem al anterior, pero con el agregado de que la “c” del
principio de la palabra puede ser mayúscula o minúscula.
• /^[cC][a-z]sa Idem al anterior añadiendo que las ocurrencias solo estén al
principio de una línea.
• /[cC][a-z]sa$ Idem al anterior añadiendo que las ocurrencias solo estén al
final de una línea.
… y podemos seguir complejizando las búsquedas según nuestras necesidades!

El modo "línea de comandos", o modo "ex"


Vamos a aprender ahora a utilizar el modo “ex”, también conocido como “modo línea
de comandos”, o “modo :”.
Este modo es sumamente útil porque permite ejecutar comandos especializados
dentro del editor, y además cargar diversas configuraciones de visualización dentro
del editor.
Primero, debemos estar en modo comando (presionando escape), y luego presionar el
carácter de dos puntos “:”. Veremos que el cursor pasa a la última línea de control del
editor, y podemos escribir.
¿Qué comandos podemos ejecutar desde aquí? Nada más simple que verlo con
ejemplos.
• :10,20y Copia desde la línea 10 hasta la línea 20 en el portapapeles. Sería
equivalente a posicionarse en la línea 10 y ejecutar “10yy” o “10Y”.
• :10,20d Idem al anterior, con la diferencia de que en vez de copiar,
estaremos cortando/eliminando dicho texto.
• :1,4co25 Copia desde la línea 1 hasta la línea 4, y las pega luego de la línea
25.

Junco TIC 11 www.juncotic.com


Editor de textos Vim
Material de estudio

• :1,4m25 Corta desde la línea 1 hasta la línea 4, y las pega luego de la línea
25, es decir, mueve las líneas especificadas.
• :1,4j Ejecuta el comando “J” para unir desde la línea 1 hasta la línea 4. Sería
equivalente a posicionarse sobre la línea 1 y ejecutar “4J”.
• :30p Pega el contenido del portapapeles debajo de la línea 30 del archivo.
En el caso de que quisiéramos ejecutar un comando, por ejemplo, que involucre a las
líneas 1,4 tal y como venimos viendo, pero quisiéramos “ver” esas líneas para
asegurarnos de que son las correctas, podríamos ejecutar “:1,4p” y las veremos en la
parte inferior del editor.

Límites en los comandos ex


Cuando ejecutamos un comando “ex” especificamos, generalmente, los límites en
número de líneas. Así por ejemplo :1,4 permite ejecutar un comando que involucre las
líneas 1, 2, 3 y 4.
Veamos ahora algunos especificadores de límite adicionales para poder extender el
uso de “ex”.
• 1 Primera línea del archivo, “:1,4d” corta de la línea 1 a la 4.
• $ Ultima linea del archivo, “:10,$d” corta desde la línea 10 hasta la
última del archivo.
• 0 Línea anterior a la primera… parece raro, pero es muy útil para
pegar texto. Supongamos que quisiéramos pegar el contenido del portapapeles
encima de la primer línea del archivo… podríamos ejecutar “:0p”. Además, si
quisiéramos mover, por ejemplo, desde la línea 10 a la 20, y colocarlas al
principio del archivo, podríamos ejecutar “:10,20m0”.
• . (punto) Línea actual del cursor… permite operar utilizando la línea en la que
se encuentra el cursor al momento de ejecutar el comando “:”.
• % Todo el archivo (similar a :1,$)… así, si quisiéramos copiar el
contenido completo del archivo al portapapeles, simplemente podemos hacerlo
con “:%d”.

Modo visual
Este juego de modos visuales viene a solucionarnos un problema que tenemos con el
modo EX, y es el de desconocer el número de línea sobre la o las que queremos
aplicar un comando.
Supongamos que estamos editando un texto, y queremos eliminar desde la línea
actual un bloque de texto. Si ese bloque es pequeño, podemos utilizar repetición de
comandos, como “5dd” por ejemplo. Pero si el bloque es mas grande, no podemos (o
no queremos) contar línea por línea.
La solución con EX es ver qué número de línea es la que inicia el bloque, y cual la que
lo termina, para poder ejecutar un comando “:” como los que vimos antes.
Ahora, existe una solución más fácil: seleccionar el texto. Para ello disponemos de 3

Junco TIC 12 www.juncotic.com


Editor de textos Vim
Material de estudio

modos visuales:
• Por caracteres: Presionando la tecla “v” (minúscula) en modo comandos.

• Por líneas: Presionando la tecla “V” (mayúscula) en modo comandos (shift+v)

Junco TIC 13 www.juncotic.com


Editor de textos Vim
Material de estudio

• Por bloques: Presionando la combinación “Ctrl+v” en modo comandos.

Una vez que tenemos el texto seleccionado podemos ejecutar comandos propios del
modo comando. Veamos algunos comandos útiles:
• d Borra/corta los caracteres resaltados
• D Borra/corta las lineas completas con caracteres resaltados desde el
carácter al final.
• J Une las líneas seleccionadas ejecutando el comando “J”.
• c Idem al comando “d”, pero deja el editor en modo de edición/inserción.

Además, si quisiéramos ejecutar comandos “ex” con un bloque de líneas resaltado,


podremos hacerlo presionando “:” mientras tenemos un bloque seleccionado. Esta
acción permitirá que ejecutemos un comando “ex” con el bloque cuyos límites estarán
determinados entre:
• '< inicio de la sección visual
• '> fin de la sección visual
Entonces, si seleccionamos un bloque de texto mediante un modo visual, y luego
presionamos “:” veremos en la barra inferior del editor los caracteres “:'<,'>” y
podremos agregar un comando. Por ejemplo, “:'<,'>d” eliminará el bloque
seleccionado.

Junco TIC 14 www.juncotic.com


Editor de textos Vim
Material de estudio

Macros
Imaginemos que tenemos que realizar una tarea repetitiva en nuestro editor… como
puede ser, por ejemplo, agregar caracteres al inicio de varias líneas… como
transformar esto:
ítem 1
ítem 2
ítem 3
ítem 4
En esto:
* ítem 1 *
* ítem 2 *
* ítem 3 *
* ítem 4 *
En vez de estar escribiendo los caracteres línea por línea, y más cuando las listas son
mas complejas (como por ejemplo, agregar <li> … </li> si codeas en html), podemos
hacer uso de las macros provistas por Vim.
Una macro es una serie de pasos y operaciones que podemos grabar en un buffer del
Vim, y luego repetir cuantas veces quisiéramos.
Suponiendo este ejemplo de los ítems, vamos a hacer lo siguiente:

Junco TIC 15 www.juncotic.com


Editor de textos Vim
Material de estudio

1. Nos posicionamos en la primer línea.


2. Presionamos las teclas “qa”. La tecla “q” permite iniciar la grabación de una
macro, y “a” es el nombre del buffer donde la guardaremos (mas adelante
hablamos de estos buffers de portapapeles). A partir de este momento, todo lo
que hagamos en el editor se estará guardando en la macro “a” (veremos una
leyenda “recording” o “grabando” en la parte inferior del editor).
3. Presionamos la tecla “I” (“i” mayúscula) para pasar a modo inserción al inicio de
la línea.
4. Escribimos los caracteres “* “ para iniciar la línea.
5. Presionamos Escape para salir a modo comando.
6. Presionamos la tecla “A” para pasar a modo inserción al final de la línea.
7. Escribimos los caracteres “ *”.
8. Bajamos con el cursor a la siguiente línea.
9. Detenemos la grabación de la macro presionando la tecla “q”.
Una vez con la macro grabada, podemos ejecutarla con “@qa” en cualquier línea del
archivo.
Si estamos parados en la segunda línea y presionamos “@qa” veremos que realiza los
mismos pasos y pasa el cursor a la línea siguiente.
Si quisiéramos replicar este comportamiento para 100 líneas, no tendríamos mas que
presionar, en modo comando: “100@qa” para repetir al ejecución de la macro “a” 100
veces!
Es interesante ver otros comandos que nos permiten realizar listas numeradas y más,
haciendo uso del modo EX.
Por ejemplo, si en cualquier parte del texto ejecutamos “:put =range(10,20)”
veremos que aparecen, en este caso, 10 líneas numeradas del 10 al 20, que podemos
usar para crear nuestra lista.
Si te interesa este tema y te resulta útil, te invito a pasar por este post de Tips de Vim
en su página de wikia:
http://vim.wikia.com/wiki/Making_a_list_of_numbers

Portapapeles
Hemos hablado en la sección anterior sobre el portapapeles, o buffer, o también
conocido como “registro” de Vim.
Los buffers o registros (registers en Inglés) permiten almacenar diversos
elementos dentro del editor de textos.
Cuando copiamos una línea con “yy”, o cuando eliminamos/cortamos 10 líneas con
“10dd”, estamos insertando ese contenido en nuestro portapapeles por defecto, y
podemos pegarlo en cualquier otra sección del archivo utilizando el comando “p”.
Ahora bien, si quisiéramos copiar dos secciones de texto diferentes, y disponerlas en

Junco TIC 16 www.juncotic.com


Editor de textos Vim
Material de estudio

en registros para pegarlas luego en cualquier ubicación según corresponda, también


podemos llevarlo a cabo con Vim y la gestión de estos buffers.
Veamos un ejemplo simple, dos líneas de texto en el archivo, y la necesidad de copiar
las dos en registros diferentes.
Para ello, nos posicionamos sobre la primer línea, y en vez de copiar con yy, lo vamos
a hacer con “ayy. La primer comilla doble permite especificar el nombre del buffer (al
igual que en las macros). En este caso guardamos la línea en el registro “a”.
Luego pasamos a la siguiente línea, y para guardarla en el registro “b”, simplemente
presionamos: “byy.
Ahora ya tenemos las dos líneas copiadas en el portapapeles, en registros distintos.
Incluso, podemos ver la totalidad de los registros utilizando el comando EX:
“:registers”. En la primer columna veremos los nombres de registro, en el estilo “a,
“b, “c, etc. En la segunda columna, el contenido de los mismos.

Por último, solo nos resta pegar el contenido, y esto podemos hacerlo de manera
intuitiva, pegando en cualquier parte del texto, usando el comando “p”, el contenido
de alguno de los buffers:
“ap Pega el contenido del buffer “a
“bp Pega el contenido del buffer “b

Junco TIC 17 www.juncotic.com


Editor de textos Vim
Material de estudio

Quizás sea obvio, pero cualquier cosa que copiemos podemos enviarla a un registro
particular. Por ejemplo, si deseamos copiar desde la línea actual, las 10 líneas
sucesivas y enviarlas al buffer “x”, podemos hacerlo presionando en modo comando:
“x10yy

Y luego pegar dicho contenido en cualquier parte con “xp


Por último, cabe aclarar que los registros de Vim se usan tanto para portapapeles
como para grabar macros, por lo que si copiamos una línea en el portapapeles “a
donde previamente teníamos una macro grabada, ésta será reemplazada.

Múltiples archivos
Sí, Vim nos permite trabajar con varios archivos simultáneamente, lo que facilita
varias cosas, entre las que podemos contar el tener un portapapeles compartido para
poder copiar y pegar texto entre diferentes archivos, o incluso reutilizar macros.
Esto puede realizarse de varias formas, entre las que contamos: tabs/pestañas,
pantalla dividida en paneles, o edición de archivos múltiples.

Abriendo varios archivos


La forma más simple de editar varios archivos es abrirlos en simultáneo, por ejemplo,
así:
vim archivo1 archivo2 archivo3

Luego, veremos en la interfaz del Vim un solo archivo activo, y para movernos entre
ellos, por ejemplo, para copiar y pegar contenido del portapapeles, disponemos de
algunos comandos EX:
• :next Salta al siguiente archivo en la lista de archivos abiertos.
• :prev Salta al archivo anterior en la lista de archivos abiertos.
• :3next Salta 3 archivos hacia adelante en la lista de archivos abiertos.
• :2prev Salta 2 archivos hacia atrás en la lista de archivos abiertos.
Los nombres de los archivos no se verán… pero disponemos de la combinación
“Ctrl+f” para ver en la barra inferior el nombre del archivo actual, o su equivalente en
comandos EX: “:file”.

Utilización de "tabs" o pestañas


Supongamos que necesitamos editar dos archivos de texto, archivo1 y archivo2.
Podemos abrirlos simultáneamente en dos tabs de la siguiente manera:
vim -p archivo1 archivo2

Junco TIC 18 www.juncotic.com


Editor de textos Vim
Material de estudio

Esto nos permite abrir ambos archivos en dos tabs o pestañas distintas.
Luego, podemos movernos por los tabs en secuencia utilizando varias opciones.
La más cómoda y común si son pocos tabs, es presionar las teclas “gt” para cambiar
el tab.
Otras opciones disponibles son:
• :tabnext Se posiciona en el siguiente tab de la derecha.
• :tabprevious Se posiciona en el tab anterior.
• :tabfirst Se posiciona en el primer tab de la lista.
• :tablast Se posiciona en el último tab de la lista.
• :tabmove Mueve el tab activo al final de la lista.
• :#tabmove Mueve el tab activo a la ubicación especificada con # (0 es la la
primera).
• :tabmove +# Mueve el tab activo # ubicaciones hacia la derecha (# es un
número)
• :tabmove -# Mueve el tab activo # ubicaciones hacia la izquierda (# es
un número)
• :tabclose Cierra el tab activo.

A su vez podemos abrir un tab nuevo ejecutando:


:tabnew

Junco TIC 19 www.juncotic.com


Editor de textos Vim
Material de estudio

Y si especificamos un nombre de archivo, lo abrirá en ese nuevo tab:


:tabnew archivo3

Dividiendo en paneles
Otra forma de trabajar con Vim varios archivos es dividiendo la ventana en paneles
verticales u horizontales. Esto es muy útil si estamos editando varios archivos y los
necesitamos a la vista.
Además permite editar el mismo archivo simultáneamente en dos paneles, por lo que
podemos en un panel estar editando una parte, y en otro otra distinta.
Los comandos principales son:
• :split Divide la pantalla del Vim en dos paneles horizontales.
• :vsplit Divide la pantalla del Vim en dos paneles verticales.
En ambos casos, el nuevo panel contendrá el mismo archivo que estaba activo al
ejecutar el comando. Si queremos que se abra un nuevo archivo en el panel, ya sea
vertical u horizontal, simplemente debemos especificar el nombre del archivo:
• :split archivo1
• :vsplit archivo2

Para cambiar de un panel a otro simplemente hay que presionar la combinación de


teclas Ctrl+w y luego la flecha del cursor que apunte al panel que necesitamos
activar.

Junco TIC 20 www.juncotic.com


Editor de textos Vim
Material de estudio

Con :q podemos cerrar el panel activo, y las opciones de guardado o no de los


cambios son las mismas que para un solo archivo abierto. Se cerrará el panel y
quedarán activos los demás. Si deseamos cerrar el editor, podemos cerrar cada panel
de forma individual, o utilizar “:qall” para cerrar todos los paneles.
Ahora, los paneles se abren dividiendo la pantalla (o el panel activo) en dos a la mitad,
ya sea vertical u horizontalmente.
Si deseamos que un panel se abra con una cierta cantidad de líneas (horizontal) o
columnas/caracteres (vertical), podemos especificarlo en el mismo comando de esta
forma:
• :10split archivo2 Abre el archivo 2 en un panel horizontal de 10 líneas, por
todo el ancho de la pantalla o del panel activo.
• :30vsplit archivo3 Abre el archivo 3 en un panel vertical de 30 columnas,
por todo el alto de la pantalla o del panel activo.
En el caso de necesitar abrir un panel nuevo en blanco (sin ningún archivo asociado)
podemos usar los comandos new y vnew de la misma forma que split y vsplit:
:new Abre un panel horizontal nuevo.
:vnew Abre un panel vertical nuevo.
En ambos casos puede especificarse, al igual que con split o vsplit, el tamaño en
líneas o columnas respectivamente.

Cambiando el tamaño
Una vez que tenemos varios paneles abiertos, podemos cambiar el tamaño de los
mismos presionando la combinación Ctrl+w acompañada de uno de los siguientes
símbolos:
• “+” Aumenta en 1 la cantidad de líneas del panel.
• “-” Reduce en 1 la cantidad de líneas del panel.
• “>” Aumenta en 1 la cantidad de columnas del panel.
• “<” Reduce en 1 la cantidad de columnas del panel.
Estos comandos también son afectados por la repetición, por lo que si, en modo
comando, typeamos “5” seguido de “Ctrl+w” seguido de “+” estaremos aumentando
en 5 la cantidad de columnas del panel, ya que repetimos cinco veces el comando
Ctrl+w+”+”.

Abriendo el Vim con paneles cargados


Si deseamos abrir archivos en nuestro editor, y que se vean en dos paneles
automáticamente, podemos invocarlo de la siguiente forma:
vim -o archivo1 archivo2 Divide en paneles horizontales.
vim -O archivo1 archivo2 Divide en paneles verticales.

Junco TIC 21 www.juncotic.com


Editor de textos Vim
Material de estudio

Deshaciendo cambios
Algo muy importante en el editor de textos es poder deshacer los cambios que
estamos realizando, en el caso de que nos demos cuenta que están erróneos… o
incluso, rehacer algunos cambios.
Vim no puede ser menos y también incorpora estos comandos!
Al presionar la tecla “u” (undo) en modo comando (“u” minúscula) podremos
deshacer el último cambio efectuado. Presionar “u” repetidamente deshará varios
cambios, uno a la vez. También es factible repetir el comando para deshacer cierta
cantidad de cambios.
Por otro lado, si estamos en una línea de texto, la editamos, realizamos varios
cambios, y nunca salimos de dicha línea, podremos presionar “U” (u mayúscula) y
deshacer todos los cambios en la línea en cuestión, dejándola en su estado original.
Para rehacer cambios, siempre en modo comando, podemos presionar la combinación
“ctrl+r” (redo). Este comando, como cualquier otro, también es afectado por la
repetición.

Plugins en Vim
Ahora veremos cómo instalar algunos Vim plugins interesantes en nuestro querido
editor de textos Vim, y que nos van a permitir mejorar nuestra productividad editando
cualquier archivo de texto, incluido, por supuesto, nuestros códigos fuente si somos
programadores.
¿Quién ha dicho que Vim es un editor de textos pobre? “No uses Vi/Vim, es un editor
difícil de manejar”, etc.
Vim no es un editor “simple” de aprender al principio, pero una vez que le tomas el
gusto, es un excelente editor de textos de línea de comandos, y puede mejorar tu
tremendamente tu productividad editando archivos de configuración, o de código
fuente si eres programador.
De más está decir que se trata de Vim, el “Vi IMproved“, o Vi Mejorado, no de la
versión Vi clásica… por lo que si queremos utilizarlo deberemos instalarlo en la
mayoría de las distros. Generalmente se encuentra en el repositorio, por lo que
utilizando el gestor de paquetes de al distro no será un problema.

Vim Autocomplete: el auto-completado por defecto


Vim posee, por defecto, el autocompletado de texto teniendo en cuenta el texto que
ya se encuentra escrito en el archivo que estamos editando, y también, si es código
fuente, el texto escrito en archivos incluidos, como los #include de código C por
ejemplo.
Esta característica puede activarse utilizando la combinación de teclas “Ctrl+n“, que
abrirá una ventana popup donde tendremos las opciones a elegir según sea lo que
estamos escribiendo.

Junco TIC 22 www.juncotic.com


Editor de textos Vim
Material de estudio

Vundle: un genial administrador de plugins


Para poder instalar plugins de una forma simple en Vim vamos a necesitar un gestor
de Plugins. Existen varios, pero en este post (y por las experiencias que tuve) opté por
introducir a Vundle, una herramienta más que atractiva y fácil de utilizar para
gestionar los plugins que necesitemos.
Es necesario saber que Vim gestiona una directorio y un archivo ocultos en el home de
cada usuario. Puede que no existan, pero si existen, tendrán su efecto:
• .vimrc: Archivo de configuración de opciones de Vim para el usuario.
• .vim/ : Directorio donde se almacena información local de Vim para el usuario,
incluidos los vim plugins.
Si bien Vim lee también el archivo /etc/vimrc, usualmente configuro vim local para mi
usuario, o para cada usuario, de modo que cada quien agregue las configuraciones
que le interesen. La sintaxis entre el /etc/vimrc y el .vimrc del home de un usuario es
la misma, solo cambia el usuario al que se le aplican los cambios (en el primer caso, a
todos los usuarios del sistema).

Veamos entonces cómo instalar Vundle en Vim


Los plugins generalmente se encuentran alojados en algún repositorio GIT, y Vundle no
podía ser menos. Para instalarlo debemos simplemente clonarlo dentro de nuestro
directorio .vim local de usuario:
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
Luego de ejecutar este comando dispondremos del directorio “bundle” dentro del .vim/
de usuario.
Para poder configurar y agregar nuevos plugins, debemos agregar algunas líneas a
nuestro ~/.vimrc. Si bien todo el bloque de configuraciones Vundle se puede agregar
allí, personalmente como costumbre de orden en mis configuraciones, suelo agregar
todas las líneas de gestión de plugins en un archivo llamado “plugins.vim” guardo
dentro del directorio .vim/ de mi usuario, y luego sí, en el .vimrc lo referencio.
En fin, editamos nuestro .vimrc y agregamos esta línea al final:
so ~/.vim/plugins.vim

Y creamos el archivo “plugins.vim” dentro del ~/.vim de usuario, con el siguiente


contenido:
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
let g:clang_c_options = '-std=gnu11'
Plugin 'VundleVim/Vundle.vim'
" (*) Aqui agregamos las líneas <Plugin> para incorporar nuevos plugins a Vim
call vundle#end() " required
filetype plugin indent on " required

Junco TIC 23 www.juncotic.com


Editor de textos Vim
Material de estudio

Donde he puesto la línea marcada con (*) es donde deberíamos agregar los vim
plugins que quisiéramos instalar, y luego cargarlos en el Vim.

Instalando plugins: un ejemplo simple


Consideremos, por ejemplo, la instalación del plugin YouCompleteMe, un plugin que
permite autocompletar código en la medida en que vamos escribiendo.
Es un plugin algo pesado (unos 235 MiB aprox.), por lo que deberemos esperar un
poco a su descarga, pero nada que no valga la espera
Para ello, agregamos la siguiente línea a nuestro archivo plugins.vim:
Plugin 'Valloric/YouCompleteMe'

Luego ejecutamos por terminal el siguiente comando para instalar Vundle:


vim +PluginInstall +qall

O, alternativamente, podemos abrir el Vim y correr en modo ‘ex’:


:PluginInstall

Con este comando instalaremos el plugin YouCompleteMe en nuestro Vim, y


podremos utilizarlo de inmediato!

Junco TIC 24 www.juncotic.com


Editor de textos Vim
Material de estudio

Algunos Vim plugins interesantes


En mi caso particular he probado varios plugins, incluidos YouCompleteMe, y por mis
costumbres y trabajo como programador C, me he quedado con estos plugins en mi
Vim:
Plugin 'MarcWeber/vim-addon-mw-utils'
Plugin 'tomtom/tlib_vim'
Plugin 'garbas/vim-snipmate'
Plugin 'honza/vim-snippets'
Plugin 'https://github.com/scrooloose/nerdtree'

Lo que me permite aumentar muchísimo mi productividad programando! Aquí un


simple ejemplo de cómo crear un “hola mundo” documentado con Doxygen y
separación en funciones
Cabe aclarar que no todos los plugins son compatibles entre si. Por ejemplo, el
autocompletado de YouCompleteMe no corre por defecto si cargamos los plugins de
snippets mostrados arriba.

Comandos de Vim Plugins


Dentro de nuestro Vim podemos ejecutar varios comandos relacionados con los
Plugins.
Así como “:PluginInstall” instala los plugins que se encuentren en el archivo
plugins.vim o .vimrc, el comando “:PluginClean” eliminará los plugins que estén
instalados (o sea, cuyos archivos se encuentren dentro de “~/.vim/bundle/”) y que no
estén especificados en el plugins.vim.
Si ejecutamos “:PluginList” podremos ver los plugins instalados.

Junco TIC 25 www.juncotic.com


Editor de textos Vim
Material de estudio

Todos estos comandos pueden ser ejecutados directamente desde la línea de


comandos utilizando el símbolo de suma “+”. Por ejemplo, si queremos eliminar todos
los plugins instalados, simplemente debemos borrar las líneas correspondientes en el
archivo plugins.vim, y luego por terminal ejecutar:
vim +PluginClean +qall

Esto eliminará todos los archivos de plugin que se encuentren dentro de


“~/.vim/bundle/“.
Luego, si los instalamos nuevamente, se descargarán desde los repositorios Git y se
instalarán en dicho directorio.
La opción “+qall” equivale al comando ex “:qall”, es un “:q” para salir del editor sin
tener que ir cerrando archivo por archivo

Conclusiones: Vim Plugins


El formato de plugins que referenciamos en el archivo plugins.vim, como ser
“honza/vim-snippets“, hace referencia a un usuario y proyecto alojado en github.com.
Si
Algún plugin que quisiéramos instalar no está en github, simplemente especificamos
la ruta completa, o incluso, si lo está, también. Podríamos, por ejemplo, especificar lo
siguiente:
Plugin 'http://github.com/vim-scripts/cpp.vim'

De mas está decir que las combinaciones de teclas y usos de cada vim plugin estará
documentado en el sitio Git del plugin, ir a los README’s para tener más info.
Como tip adicional, en mi caso, cuando programo en C suelo colocar las llaves de
apertura de funciones a la derecha de la función (no debajo)… y el plugin de
autocompletado (vim-snippets en este caso) colocaba las llaves abajo. No fue difícil
dar con el archivo de definición del plugin para mi lenguaje, y editarlo para que se
comporte como yo quiero 😀
vim ~/.vim/bundle/vim-snippets/snippets/c.snippets

Finalmente, los invito a pasar por vimawesome.com o vim-scripts.org, sitios llenos de


plugins para poder agregar a nuestro querido vim! Además en la red existe mucha
información y comentarios sobre plugins que pueden interesarnos… es cuestión de
buscar e instalar lo que nos haga la vida más fácil dentro de nuestro editor favorito
Espero sea de utilidad!

Junco TIC 26 www.juncotic.com


Editor de textos Vim
Material de estudio

Algunos comandos útiles


En esta sección he agregado (y seguiré actualizando el archivo periódicamente)
algunos comandos EX que suelo utilizar en mis ediciones.
Vim dispone de muchísimos comandos, por lo que en la medida en que me sean
necesarios iré agregando los que crea interesantes, y por supuesto, los aportes de
todos también los iré agregando a la lista!

Comandos persistentes
Ante de cargar la lista, conviene aclarar que no es necesario ejecutar todos los
comandos que necesitemos cada vez que inicia el editor. Vim dispone de un archivo de
configuración dentro del directorio HOME del usuario llamado “.vimrc”, que será leido
cada vez que abrimos Vim.
En sistemas GNU/Linux también disponemos del archivo /etc/vimrc donde podemos
cargar configuraciones globales para todos los usuarios del sistema.
Así, si al abrir el editor, por ejemplo, nos gusta ver la sintaxis de un lenguaje de
programación (:syntax on), y la numeración de las líneas (:set nu), no es necesario
ejecutar estos dos comandos cada vez que cragamos el editor… podemos escribirlos
dentro del archivo .vimrc y se ejecutarán al inicio automáticamente!
En el archivo .vimrc los comandos EX se escriben SIN especificar el carácter “:” al
inicio.

Lista de comandos útiles


Comando Descripción
:set hlsearch Activa el resaltado en las palabras de búsqueda.

:set nohlsearch Desactiva el resaltado en las búsquedas.

:set incsearch Activa la búsqueda incremental (comienza a buscar en la medida en que


vamos escribiendo luego del “/”.
:set noincsearch Desactiva la búsqueda incremental.

:set ic Desactiva la detección de mayúscula-minúscula en las búsquedas.

:set noic Activa la distinción entre mayúscula-minúscula en las búsquedas.

:set nu Activa la numeración de las líneas

:set nonu Desactiva la numeración de las líneas.

:%s/viejo/nuevo/g Reemplaza la palabra “viejo” por “nuevo” en todo el texto.

:%s/viejo/nuevo/gc Idem al anterior, pero pidiendo confirmación en cada sustitución.

:shell Sale a la terminal de comandos para ejecutar comandos, y luego vuelve al


salir de la terminal con “exit”.

Junco TIC 27 www.juncotic.com


Editor de textos Vim
Material de estudio

:set foldmethod=indent Permite agrupar bloques de código teniendo en cuenta su indentación (útil
para programadores).
:syntax on Activa el coloreo de sintaxis en archivos de código fuente.

:syntax off Desactiva el coloreo de sintaxis.

:set autoindent Permite mantener la indentación automática en códigos fuente de programas.

:set noautoindent Desactiva la indentación automática.

:set tabstop=2 Configura a 2 caracteres el tabulador (puede cambiarse).

:set background=dark Permite una mejor visibilidad en comentarios y texto de códigos fuentes.

:set columns=120 Configura la cantidad de columnas del editor.

:set lines=50 Configura la cantidad de líneas del editor.

:colorscheme desert Cambia el esquema de colores del editor.

Junco TIC 28 www.juncotic.com


Editor de textos Vim
Material de estudio

Comunidad JuncoTIC
Recuerda que puedes sumarte a la Comunidad JuncoTIC siguiéndonos
en nuestras redes sociales!

Facebook Twitter Linkedin Google+ Youtube Telegram

Puedes aprovechar todo el contenido que diariamente estamos


publicando y actualizando en nuestro blog!

https://juncotic.com/blog/

Además, te invitamos a suscribirte a nuestra lista de distribución para


que recibas todas las semanas novedades de contenidos publicados en el
blog, y últimos lanzamientos.

Por cualquier duda, sugerencia de información sobre cursos y temarios, o


información sobre nuestros servicios, esperamos tu consulta en:
https://juncotic.com/contacto

O directamente por correo electrónico a info@juncotic.com

Junco TIC 29 www.juncotic.com

Das könnte Ihnen auch gefallen