Skip to content

Instantly share code, notes, and snippets.

@j0n3
Last active January 14, 2019 20:20
Show Gist options
  • Save j0n3/7e79df814e1e3b0ea1bfc4fb7f51251b to your computer and use it in GitHub Desktop.
Save j0n3/7e79df814e1e3b0ea1bfc4fb7f51251b to your computer and use it in GitHub Desktop.

Introducción

Este documento son sólo mis notas para hacer una charla/práctica de introducción a Vim. No está pensado como cheatsheet pero puede que lo vaya retocando para que pueda ser usado como tal.

Historia

Moolenaar publicó Vim por primera vez (v1.14) en 1991.
Vim se basó en un editor anterior, Stevie, para el Atari ST
y blablabla... (Wikipedia)
  • ¿Por qué vim?

    • Editor universal
    • Ligero
    • Potente
    • Configurable
    • Productivo
    • Comunidad
  • Dificultades

    • Fuera de lo común y nada intuitivo
    • Muchas cosas que memorizar
    • Curva de aprendizaje
  • Vi vs IDE

    • Misma herramienta para todo
    • Consola = remoto

Instalación y configuración

apt, página oficial... ~/.vimrc :e $MYVIMRC : Abrir vimrc actual :tabnew $MYVIMRC : Abrir vimrc source $MYVIMRC : recargar configuración

Comandos

:comando

:help | h

:h cmd

:h yy

Salir de vim

:h quit

:q | :q! | :wq | :x | ZZ | CTRL-W Q

Abrir documentos

$ vi abrir.txt : yeah! :|

$ vi -p archivo.txt otro.txt: abrir en tabs

$ vi -o archivo.txt otro.txt: abrir en splits

$ vi archivo.txt +cmd : abrir y ejecutar ese comando, por ejemplo, abrir e ir a la línea 23: vi a.txt +22

:ls | pwd | CTRL-g : qué hay abierto, dónde estoy, nombre del archivo

Modos

  • Normal - CTRL+C
  • Inserción
  • Reemplazo
  • Visual

Movimiento

hjkl: ←↓↑→

**gg | G **: principio | fin de archivo

$ :final de línea

0 | ^ | _ : inicio de línea | primer carácter

e | E | b | B : begin end of word | WORD (separado por espacios)

w | W : forward word | WORD

CTRL-d | CTRL-u : Down/Up media página

CTRL-f | CTRL-b : Forward/Backward media página

SHIFT-M : Ir a la mitad de la pantalla

zt | zb : Poner texto top/bottom sin mover el cursor

% : match bracket

Undo | Redo

u | CTRL-r : undo, redo

:earlier | later [time] : podemos irnos a una versión de hace... earlier 1h

Inserción

i : insertar

a: insertar delante

I: insertar al principio

A: insertar al final

o | O: insertar en una línea debajo | encima

Borrado

d[motion]

dd : elimina la línea

D borra el contenido de la línea

x | X : Borrar siguiente | anterior

:g/[regexp]/d : borrar líneas que contengan [regexp]

  • cualquier cosa borrada se queda en el registro por lo que se puede pegar ddp : intercambiar líneas

Reemplazar

r : reemplaza una letra

R : entrar en modo reemplazar

s : reemplaza y entra en edición

c[motion] :cambiar hasta motion. Entra en modo inserción

ciw : cambiar una palabra

ci[" | ' | [ | ( |{ ] : cambiar lo que esté dentro del símbolo +

  • Upper & lowercase

**u | U | ~** : to upper and lower case | switch (visual) gU[motion]: set uppercase for motion

  • example: gUw: Uppercase a word

CTRL-a | CTRL-x Incrementar o decrementar número

Buscar

t | T [char] | f | F[char]: hasta el [char] anterior o siguiente (Mays = inverso)

/ | ? | # | * | + n | N Búsquedas normales

il / listar

  • al usar el comando %s//reemplazo/g

Copiar pegar

y[motion] :yank (copia)

yy copiar línea

y/[search] : yank hasta búsqueda

Registros

"[char][motion|selection]

"ay$: guarda en el registro 'a', en este caso yank hasta el final de línea

"ap : Pegar desde el registro

  • Si tenemos +xterm_clipboard (vim --version) podemos usar "* y "+ para copiar al portapapeles

Marcadores

:h mark : mira la ayuda sobre marcas

m[char]: marcar posición en a-z

'[char]: ir a posición a-z

m[A-Z]: marcas entre archivos

como motion:

'[char]: borrar hasta la posición

m[<|>]: marcar inicio y fin de selección

  • gv : ir a la última selección

Macros

q[char] : grabar macro (q para parar)

@[char] : Ejecutar macro

@@ : última macro

Visual

  • v Modo visual
  • V Seleccionar una línea
  • <|> para reindentar un bloque
  • CTRL+v Selección por columna
  • I en modo columna para insertar en varias líneas, esc para finalizar

Listar, mostrar buffers y cambiar

:ls : mostrar buffers :n : siguiente buffer :prev : buffer anterior :bnext :bprev

Tabs

Abrir documentos en tabs: vim -p .txt

  • Moverse por los tabs gt | gT | CTRL-ALT-AvPag | :tabnext | :tabn | :tabprevi :close | clo | CTRL-w CTRL-q cerrar tabs
  • tabdo il/[búsqueda] listar en todos los archivos abiertos

  • Mover los tabs: :tabmove +2

Splits

:split | :sp | :vsplit | :vsp | :clo |

CTRL+w s: split

CTRL+w H|K: Cambiar split a horizontal o vertical

CTRL+w W : rotar foco entre ventanas

CTRL+w hjkl : moverse entre ventanas

$ vim -o [archivos]

Extras && tricks

= : autoindentado

gg=G: autoindentar todo

gx : sobre un elnlace abre un navegador, o sobre cualquier cosa abre la aplicación por defecto

gf : sobre una ruta a archivo, lo abre

:set numbers! : ! toggle set

J :Join - unir esta línea y la siguiente

:w !sudo tee % : Guardar el documento con privilegios. :%!xxd : pasar contenido a hexadecimal

Referencias

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment