Beruflich Dokumente
Kultur Dokumente
Material de estudio
—
Diego Cordoba
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.
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.
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.
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
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
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.
Búsquedas avanzadas
Ahora bien, pueden utilizarse algunos caracteres especiales dentro de los para realizar
búsquedas más específicas. Veamos algunos ejemplos.
• :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.
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
modos visuales:
• Por caracteres: Presionando la tecla “v” (minúscula) 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.
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:
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
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
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
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.
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”.
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.
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
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+”+”.
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.
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.
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
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.
: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.
:set background=dark Permite una mejor visibilidad en comentarios y texto de códigos fuentes.
Comunidad JuncoTIC
Recuerda que puedes sumarte a la Comunidad JuncoTIC siguiéndonos
en nuestras redes sociales!
https://juncotic.com/blog/