¿Cacharreas? aprende vim
--- Fecha: vie 14 feb 2025 13:31:00 CET ---
- Actualización -
- 03-03-2025
No creo que vi, ni su evolución Vim, necesiten presentación. Vienen con los sistemas *nix desde sus inicios prácticamente, ya sean Linux, BSD o MacOS.
Un poco de historia
A finales de 1960 Ken Thompson, co-creador de Unix, se curró un editor para éste, basado en Qed, un editor anterior, simple y complejo de usar. El editor se llamó ed. Tienes más info sobre Ken Thompson y sus creaciones en el siguiente enlace:
A mediados de 1970 Bill Joy creó una versión mejorada de ed llamada ex (edición extendida) y a finales de 1970 se introdujo vi, que no era más que abrir ex en modo visual, porque este modo era tan potente y utilizado que el ejecutable de Bill ya entraba directamente en él. Con el el tiempo, vi se convirtió en el nombre por encima de ed.
Hoy vi viene predeterminado y es el editor por defecto que usan muchos programas para su configuración o edición de archivos.
En 1988 un ingeniero neerlandés llamado Bram Moolenaar no pudo usar vi en un ordenador Amiga porque el código de vi estaba basado en el de ed, que era propiedad de AT&T.
Como estaba acostumbrado a vi, usó el código de STEVIE, un clon de vi, lo mejoró y lo llamó ViM (Vi iMproved).
Desde entonces vi/vim ha sido tan importante que hoy en día hay infinidad de programas y hasta webs que usan su sintaxis para moverse por ellos.
Curiosidad
¿Por qué vi/vim usa las teclas h,j,k,l para mover el cursor? Más tarde verás que se usan para mover el cursor izquierda, abajo, arriba y derecha, aunque también se pueden usar las flechas. Es una herencia de cuando Bill Joy creó vim, ya que lo hizo en una terminal ADM-3A en la cual las felchas estaban en las teclas hjkl, y naturalmente, eso ha quedado para el resto de la historia.
Vim
Hablar de vim es hablar de potencia, mucha potencia, muchísima, tanta que al final no usas ni un 10% en tus tareas habituales de edición de archivos de texto. Y es por eso que no he prestado atención a tanta potencia, entre otras cosas, porque vim funciona con expresiones regulares, que traducido al castizo significa dolores de cabeza, así que he pasado de lo que posiblemente no usaré en la vida, y me he centrado en el uso que le doy a un editor de texto cualquiera.
Y ese es el truco para salir airoso con el uso de vim, aprender solo lo que necesitas, abrirte un archivo de prueba y practicar lo que necesitas, apuntando los atajos y listo (es como lo hice yo).
Vim viene muy soso, así que puedes configurarlo a tu gusto (dentro de sus posibilidades). Solo pongo las que más partido le saco, pero hay muchas más opciones. Este es mi archivo de configuración (.vimrc):
colorscheme torte syntax on set number set mouse=a set backup set backupdir=. set t_Co=256 inoremap ( ()<Esc>i inoremap " ""<Esc>i inoremap [ []<Esc>i inoremap { {}<Esc>i inoremap < <><Esc>i set hlsearch nnoremap <C-L> :nohls<cr><C-L> autocmd BufRead,BufNewFile *.md set filetype=markdown autocmd BufRead,BufNewFile *.hbs set filetype=html autocmd BufRead,BufNewFile *.ejs set filetype=html autocmd BufRead,BufNewFile *.njk set filetype=html
Con eso activo un tema que me gusta, los números de linea, sintaxis destacada, le digo que haga backup en cuanto guarde el archivo, que use 256 colores y establezco formatos de archivos.
Atajos
Muestro aquí a modo de autoguía los atajos que más utilizo. Quizá te puedan servir, teniendo en cuenta que hay muchísimos más que no pongo porque no los uso.
Modos
i |- Insertar v |- Visualizar ctrl + v |- Bloque visual Esc |- Volver a modo normal
Moverse
h,j,k.l |- Mover el cursor a izquierda,abajo,arriba,derecha w |- Salta una palabra adelante b |- Salta una palabra atrás 5w |- Salta 5 palabras :12 |- Ir a linea 12 5{jk} |- Salta 5 lineas abajo, arriba (,) |- Salta a frases next,prev {,} |- Salta a parrafo next,prev gg |- Va a incio de documento G |- Va a final de docmento
Edición
dd |- Cortar linea yy |- Copiar linea d3d |- Cortar 3 lineas p |- Pegar
Buscar
/ |- Buscar hacia alante ? |- Busca hacia atrás * |- Busca palabra activa adelante # |- Busca palabra activa atrás n |- Siguiente
Reemplazar
:rango s/patron/reemplazo/cgil
num Para búsqueda y reemplazo en una línea concreta
% Se refiere a las lineas de todo el archivo
. Para la línea actual
$ Se refiere a la última línea del archivo
cgild
c Confirmación de sustitución.
g Reemplaza todas las coincidencias de la línea. Si no se añade esta opción solo cambiará la primera de las apariciones en la línea.
i No distingue entre mayúsculas y minúsculas.
l Si distingue entre mayúsculas y minúsculas.
d Elimina lo que le digas.
:%s/aa/bb |- Reemplaza aa por bb en todo :s/aa/bb |- Reemplaza aa por bb en la linea :g/^ho/d |- Busca(:g/) lo que empiece (^) por ho y lo borra (/d) :5,10s/casa/caso/g |- Reemplaza casa por caso entre las líneas 5 y 10 del documento :g/^\s*#/d |- Busca de forma global (g) lo que empiece (^) por espacio (\s) o todos (*) y los # los elimine (d) :g/^$/d |- Eliminar lineas vacías
Otros
:w |- Guardar :w file |- Guardar con el nombre file :saveas |- Guardar como :q |- Salir :q! |- Salir sin guardar u |- Undo :ea |- undo ctrl + r |- Redo :vnew |- Abre una ventana vertical vacía :vnew archivo |- Abre una ventana vertical con "archivo" ctrl+w |- Se mueve por esas ventanas abiertas
Espero que te sirva de ayuda y que le pierdas el miedo a vim. Cuanto más lo usas, más te engancha.
Tag: #vi #vim
/gemlog/