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.
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
apt, página oficial... ~/.vimrc :e $MYVIMRC : Abrir vimrc actual :tabnew $MYVIMRC : Abrir vimrc source $MYVIMRC : recargar configuración
:comando
:help | h
:h cmd
:h yy
:h quit
:q | :q! | :wq | :x | ZZ | CTRL-W Q
$ 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
- Normal - CTRL+C
- Inserción
- Reemplazo
- Visual
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
u | CTRL-r : undo, redo
:earlier | later [time] : podemos irnos a una versión de hace... earlier 1h
i : insertar
a: insertar delante
I: insertar al principio
A: insertar al final
o | O: insertar en una línea debajo | encima
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
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
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
y[motion] :yank (copia)
yy copiar línea
y/[search] : yank hasta búsqueda
"[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
: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
q[char] : grabar macro (q para parar)
@[char] : Ejecutar macro
@@ : última macro
- 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
:ls : mostrar buffers :n : siguiente buffer :prev : buffer anterior :bnext :bprev
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
: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]
= : 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
- Página oficial http://vim.org
- Plugins http://vim.spf13.com
- Fonts Https://github.com/powerline/fonts
- Tips & Tricks vim tips wiki en Wikia:http://vim.wikia.com/wiki/Vim_Tips_Wiki