Skip to content

Instantly share code, notes, and snippets.

@juanje
Created September 22, 2011 00:28
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save juanje/1233729 to your computer and use it in GitHub Desktop.
Save juanje/1233729 to your computer and use it in GitHub Desktop.
Archivos de apoyo a un mini curso de VIM

f -> (find) buscar siguiente caracter. Se posiciona en dicho caracter
t -> (?) buscar el caracter, pero posicionarse justo antes
b -> (begin word) principio de la palabra (o anterior si se está al principio)
w -> (word) ir al principio de la siguiente palabra
e -> (end of word) va al final de la palabra en la que está o de la siguiente
$ -> (end of line) va al final de la línea
0 -> (col 0) va a la columna 0. El principio de la línea
^ -> (begin of line) va al principio del texto de la línea

d[orden] -> (delete) borra lo que se le diga detrás:
dd -> (delete delete) borra la línea
dw -> (delete word) borra desde el cursor hasta el final de la palabra
d0 -> (delete to 0) borrar desde la posición hasta la posición 0 en la línea
d$ -> (delete to $) borrar hasta la posición $ (final de línea) en la línea
dp -> (delete parragraph) borrar hasta el final del párrafo
3dd -> Borra 3 líneas
2dw -> Borra 2 palabras

a -> (append) insertar después del cursor
y -> copiar selección
x -> cortar selección
p -> pegar lo copiado/cortado después del cursor
P -> pegar lo copiado/cortado en donde está el cursor
"[registro]y -> copia la selección y la guarda en el registro [registro]

J -> junta la línea con la siguiente

u -> (undo) deshacer el último cambio
U -> (undo line) deshacer los cambios hechos en la línea
Ctrl+r -> (redo) rehacer el último cambio deshecho

r -> (replace) cambia el caracter actual por otro que se escriba
R -> (replace mode) se pone en modo remplazo y cambia cada caracter por lo que se escriba
~ -> cambia el caracter en el que esté el cursor de mayúsculas a minúsculas y viceversa

gf -> (go file) abre el archivo de la ruta en la que se haya el cursor
Ctrl-wf -> Abre el archivo de la ruta en un nuevo buffer (hace split)

Ctrl+g -> Muestra el path del archivo
G -> Va a una línea del archivo. Sin ningún número, va al final del archivo
23G -> va a la línea 23 del archivo

% -> Busca el siguiente ), ] o } y si se le dá otra vez, busca su pareja

Sustituciones

:s/algo/otra cosa/ -> Sustituye la primera aparición de 'algo' por 'otra cosa', en la línea actual
:s/algo/otra cosa/g -> Sustituye todas las apariciones de 'algo' por 'otra cosa', en la línea actual
:2,6s/algo/otra cosa/g -> Sustituye todas las apariciones de 'algo' por 'otra cosa', entre las líneas 2 y 6
:%s/algo/otra cosa/g -> Sustituye todas las apariciones de 'algo' por 'otra cosa', en todo el archivo

El mágico concepto de mantener el Alt ~= Esc en el modo Insertar :-)

Algunos comandos útiles

:set inv[orden] -> conmutar la configuración actual de la orden
:set list -> ver caracteres especiales (saltos de línea)
:split -> dividir la pantalla en dos buffers con el mismo archivo
:vsplit -> idem pero dividir en vertical, esto es, al lado
:new [archivo] -> abrir un nuevo buffer con [archivo] o dividir si no se pasa ninguno
:vnew idem pero en vertical (lado a lado)
:help [algo] -> muestra la ayuda de VIM para ese [algo]

:!{comando} -> Ejecuta un comando en la shell

:r[ead] (read file and paste here) lee un archivo y pega el contenido

:r !tree Documentos/emergya/formacion

Documentos/emergya/formacion/
├── curso - licencias.mm
├── Formacion PI.mm
├── TDDocumentation.mm
├── Temas de PI.mm
└── vim.txt

Encadenar comandos:

[rango] + [comando] + [movimiento]
5l -> se mueve 5 posiciones hacia la derecha
3dl -> borrar 3 caracteres hacia la derecha
2dw -> borrar las siguientes 2 palabras (w = word ahead)
f(df) -> buscar el siguiente '(' borrar desde ahí hasta el siguiente ')'
de -> borra desde donde esté el cursor hasta el final de la palabra
>> -> añade una indentación a la línea actual
v_ip2> -> seleciona el párrafo y lo indenta con dos tabulaciones
v_>} -> tabula una indentación hasta el final del párrafo (línea en blanco)
v_>2} -> tabula una indentación dos párrafos desde el cursor
gk -> se mueve hacia abajo dentro del mismo párrafo

NOTA:
*v_i significa pulsar la tecla i después de pulsar la tecla v
*v_> significa pulsar la tecla > después de pulsar la tecla v

from random import randint, uniform, shuffle, sample
from math import ceil, pow
from random import randint
from random import uniform
from random import shuffle
from random import sample
from math import ceil
from math import pow
class Repo
include MongoMapper::Document
key :name, String
key :type, String
key :commits, Array
key :bugs, Array
end
class Repo
include Mongoid::Document
field :name, type: String
field :type, type: String
field :commits, type: Array
field :bugs, type: Array
end
@juanje
Copy link
Author

juanje commented Sep 23, 2011

Mi solución al reto 1 (reto_imports.py) en 28 pulsaciones:

ggqwvt3[Space]"ay:s/,/\r<C-R>a/g[Enter]qj0@w

Explicación:

gg -> Va al principio del archivo
qw -> Comienza a grabar una macro con nombre w
v -> Seleciona. Pasa a modo Visual
t3[Space] -> Busca 3 espacios y coloca el cursor justo antes de dicho tercer espacio. Se selecciona hasta ahí
"ay -> Se guarda la selección en un registro de nombre a
:s/,/\r<C-R>a/g[Enter] -> Sustituye en esa línea todas las comas por un salto de línea y el contenido del registro a
q -> Termina de grabar la macro
j -> Baja el cursor a la linea inferior
0 -> Va al principio de la línea
@w -> Ejecuta la macro w en al línea actual

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