¿Cacharreas? aprende vim


--- Fecha: vie 14 feb 2025 13:31:00 CET ---

- Actualización -


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:


Historia Unix para dummys


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



◄ Listado principal

◄◄ Inicio



/gemlog/