130+Comandos de Vim esenciales

Desde los años 70, vi y vim son los editores de texto mas populares entre los programadores. Esta entrada es una traduccion escrita originalmente por Jean Baptiste Jung, en su blog www.catswhocode.com espero lo disfruten.

Lo basico

:e nombre_de_archivo Abrir nombre_de_archivo para edición
:w Guardar archivo
:q Salir de Vim
:q! Salir sin guardar
Escribir archivo (si se han realizado cambios) Salir
:sav nombre_de_archivo Guardar archivo con nombre_de_archivo
. Repite el último cambio realizado en el modo normal
5. Repite 5 veces el último cambio realizado en el modo normal

Moverse en el archivo

k o flecha_arriba mueve el cursor una línea hacia arriba
j o flecha_abajo mueve el cursor una línea hacia abajo
e mueve el cursor hasta el final de la palabra
b mueve el cursor hasta el comienzo de la palabra
0 mueve el cursor hasta el principio de la línea
G mueve el cursor hasta el final del archivo
gg mueve el cursor hasta el principio del archivo
L mueve el cursor a la parte inferior de la pantalla
:59 mueve el cursor a la línea 59. Cambie 59 por el número de línea deseado.
20| mueve el cursor a la columna 20. Cambie 20 por el número de columna deseado.
% Mueve el cursor a la combinación entre paréntesis
[[ Ir a la función inicial
[{ Ir al bloque inicial

Cortar, copiar y pegar

y Copia el texto seleccionado al portapapeles
p Pega el contenido del portapapeles
dd Corta la línea actual
yy Copia la línea actual
y$ Copia al final de la línea
D Corta al final de la línea

Busccar

/palabra Búsqueda de palabra de arriba hacia abajo
?palabra Búsqueda de palabra de abajo hacia arriba
* Buscar palabra bajo el cursor
/\ccadena Buscar CADENA o cadena, mayúsculas y minúsculas
/jo[ha]n Buscar john o joan
/\< the Buscar the, theatre o then
/the\> Buscar the o breathe
/\< the\> Buscar the
/\< ¦.\> Buscar todas las palabras de 4 letras
/fred\/ Buscar fred pero no alfred o frederick
/fred\|joe buscar fred o joe
/\<\d\d\d\d\> Buscar en exactamente 4 dígitos
/^\n\{3} Encontrar 3 líneas vacías
:bufdo /searchstr/ Buscar en todos los archivos abiertos
:bufdo %s/something/somethingelse/g Buscar algo en todos los buffers abiertos y reemplazarlo con otra cosa

Reemplazar

:%s/viejo/nuevo/g Reemplazar todas las apariciones de viejos por nuevos en el archivo
:%s/adelante/delante/gi Reemplace adelante por delante, caso insensibles
:%s/viejo/nuevo/gc Reemplace todas las apariciones con la confirmacion
:2,35s/viejo/nuevo/g Reemplace todas las apariciones entre las líneas 2 y 35
:5,$s/viejo/nuevo/g Reemplace todas las apariciones de la línea 5 hasta el fin del archivo
:%s/^/hola/g Reemplace el comienzo de cada línea por hola
:%s/$/Harry/g Coloca al comienzo de cada línea Harry
:%s/ *$//g Eliminar todos los espacios en blanco
:g/cadena/d Eliminar todas las líneas que contienen la cadena
:v/cadena/d Eliminar todas las líneas que no contienen la cadena
:s/Bill/Steve/ Colocar la primera aparición de Bill por Steve en la línea actual
:s/Bill/Steve/g Reemplace Bill por Steve en la línea actual
:%s/Bill/Steve/g Reemplace Bill por Steve en todo el archivo
:%s/^M//g Eliminar (M) de DOS los retornos de carro
:%s/\r/\r/g Transformar retornos de carro DOS en los retornos
:%s#<[^>]\+>##g Eliminar etiquetas HTML pero mediante texto
:%s/^\(.*\)\n\1$/\1/ Elimina las líneas que aparecen dos veces
Ctrl+a Aumento del número bajo el cursor
Ctrl+x Disminuir el número bajo el cursor
ggVGg? Cambie el texto para Rot13

Caso

Vu Línea en minúsculas
VU Línea en mayúsculas
g~~ Invertir caso
vEU Cambia la palabra en mayúsculas
vEu Cambia la palabra en minúsculas
vE~ Modificar el caso de la palabra
ggguG Establecer todo el texto a minúsculas
gggUG Establecer todo el texto a mayúsculas
:set ignorecase Ignorar mayúsculas en búsquedas
:set smartcase Ignorar mayúsculas en búsquedas exceptuando si utiliza una letra mayúscula
:%s/\<./\u&/g Establece primera letra de cada palabra en mayúsculas
:%s/\<./\l&/g Establece primera letra de cada palabra en minúsculas
:%s/.*/\u& Establece primera letra de cada línea en mayúsculas
:%s/.*/\l& Establece primera letra de cada línea en minúsculas

Lectura/Escritura de archivos

:1,10 w outfile Guarda las líneas 1 a 10 en el archivo de salida
:1,10 w >> outfile Anexa las líneas 1 y 10 del archivo de salida
:r infile Introduzca el contenido de archivo de entrada
:23r infile Introduzca el contenido de archivo de entrada en la línea 23

Explorador de archivos

:e . Abra el explorador de archivos integrado
:Sex Split y ventana abierta explorador de archivos integrado
:Sex! Igual que :Sex pero ventana dividida verticalmente
:browse e Explorador de archivos grafico
:ls Lista de buffers
:cd .. Mover a la carpeta padre
:args Lista de archivos
:args *.py Abrir la lista de archivos con extencion .py
:grep expression *.py Devuelve una lista que contienen la expresion .py
gf Abra nombre de archivo bajo el cursor

Interactuar con Unix

:!pwd Ejecute el pwd comando de unix, luego vuelve a Vi
!!pwd Ejecute el pwd comando de unix e inserta en el archivo de salida
:sh Retornos temporales de Unix
$exit Retorna a Vi

Alineación

:%!fmt Alinear todas las líneas
!}fmt Alinear todas las líneas en las posición actual
5!!fmt Alinear las próximas 5 líneas

Tabs/Windows

:tabnew Crea nueva pestaña
gt Mostrar ficha siguiente
:tabfirst Mostrar primer pestaña
:tablast Mostrar última pestaña
:tabm n(position) Reorganizar pestañas
:tabdo %s/foo/bar/g Ejecutar un comando en todas las pestañas
:tab ball Poner todos los archivos abiertos en pestañas
:new abc.txt Editar abc.txt en una nueva ventana

Ventana spliting

:e nombre_del_archivo Editar el nombre del archivo en la ventana actual
:split nombre_del_archivo Dividir la ventana abierta con nombre de archivo
ctrl-w up arrow Poner el cursor en la ventana superior
ctrl-w ctrl-w Poner el cursor en la ventana siguiente
ctrl-w_ Maximizar la ventana actual verticalmente
ctrl-w| Maximizar la ventana actual horizontalmente
ctrl-w= Da el mismo tamaño para todas las ventana
10 ctrl-w+ Añadir 10 líneas a la ventana actual
:vsplit archivo Ventana dividida verticalmente
:sview archivo Igual division en el modo de sólo lectura
:hide Cerrar ventana actual
:­nly Cierra todas las ventanas, exceptuando la actual
:b 2 Abrir #2 en esta ventana

Auto-completa

Ctrl+n Ctrl+p (en modo de inserción) Palabra completa
Ctrl+x Ctrl+l Línea completa
:set dictionary=dict Definir dict como un diccionario de
Ctrl+x Ctrl+k Completo con diccionario

Marcas

m {a-z} Marca la posición actual como {a-z}
‘ {a-z} Mover a la posición {a-z}
Mover a la posición anterior

Abreviaturas

:ab mail mail@provider.org Definir correo electrónico como abreviatura de mail@provider.org

Texto guión

:set autoindent Activar el auto-identado
:set smartindent Turn on intelligent auto-indent
:set shiftwidth=4 Defines 4 spaces as indent size
ctrl-t, ctrl-d Sangría/una-sangría en modo insertar
>> Sangría
<< Una-sangría
=% Sangría del código entre parentesis
1GVG= Sangría todo el archivo

El resaltado de la sintaxis

:syntax on Enciende el resaltado de sintaxis
:syntax off Apague el resaltado de sintaxis
:set syntax=perl Resaltado de la sintaxis a código perl
Anuncios

LocalStoreDB

Una Base de datos Local con JS LocalStoreDB

// Código de la aplicación de estudiantes
$(document).on(“ready”, chilaquiles);
var db = [];
 
function chilaquiles ()
{
existe();
$(“#nuevo”).on(“submit”, alburear);
$(“#limpiar”).on(“click”, borrar);
// $(“#recargar”).on(“click”, vadenuevo);
}
function borrar()
{
delete localStorage.estudiantes;
limpiarTarjetas();
}
function existe()
{
if(localStorage.estudiantes)
{
db = JSON.parse(localStorage.estudiantes);
vadenuevo();
}
}
function alburear(datos)
{
var n = $(“#nombre”).val();
var c = $(“#curso”).val();
var s = $(‘#nuevo input[name=”sexo”]:checked’).val();
 
guardarDB(n, c, s);
 
agregarTarjeta(n, c, s);
 
$(“#nuevo”)[0].reset();
//document.getElementById(“nuevo”).reset();
//$(t).css(“display”, “inline-block !important”);
datos.preventDefault();
}
function agregarTarjeta(n, c, s)
{
$(“#tarjetas”).slideDown();
var t = $(“#original”).clone();
$(t).attr(“id”, “”);
$(t).addClass(“manejo”);
 
$(t).find(“#nombre_tarjeta”).text(n);
$(t).find(“#curso_tarjeta”).text(c);
$(t).find(“#sexo_tarjeta”).text(s);
 
$(t).appendTo(“#tarjetas”);
$(t).hide().slideDown(1000);
}
function limpiarTarjetas()
{
$(“.manejo”).fadeOut();
}
function guardarDB(nom, cur, sex)
{
//localStorage.estudiantes = [];
db.push(
{
nombre: nom,
curso: cur,
sexo: sex
}
);
localStorage.estudiantes = JSON.stringify(db);
}
function vadenuevo()
{
for(i in db)
{
 
agregarTarjeta(db[i].nombre, db[i].curso, db[i].sexo);
}
}

 

Programa de Piedra Papel y Tijera por @freddier

Curso de aprendiendo a programar por @freddier

Para empezar

Aprendiendo a Programar from Octaviano on Vimeo.

Codigo

#-*- coding: utf-8 -*-
# Estoy importando la aleatoriedad
import random
maquina = random.randint(0,2)
opciones = [“Pieda”, “Papel”, “Tijera”]
reglas = [ [-1, 0, 1] , [1, -1, 0] , [0, 1, -1] ]

print “\n” * 40
print “1. Pieda”
print “2. Papel”
print “3. Tijera”
usuario = input(“Elige: “)
usuario = usuario – 1
print “Elegiste ” + opciones[usuario]

if(usuario == maquina):

print “Ambos eligieron ” + opciones[maquina]
print “Empate!”

else:

#Si es piedra
if(usuario == 0):

if(maquina == 1):

print “Perdiste!”

else:

print “Ganaste!”

#Si es papel
if(usuario == 1):

if(maquina == 2):

print “Perdiste!”

else:

print “Ganaste!”

#Si es tijera
if(usuario == 0):

if(maquina == 1):

print “Perdiste!”

else:

print “Ganaste!”

Gran curso de #mejorandoMX

Curso de Python con games

Código del curso dado por Jhon Freddy Vega

Primero el Analisis

Resumido en una imagen

Heroe y Moustro(Gato)

Se clasifica en Personaje

  • vida =100
  • ataque = [10-90]
  • curacion = 100 – ataque

Reglas

  • atacar() [70%~100%]
  • perder(vida)
  • cargar() [70%~100%]
  • morir()

codigo del juego….

#-*- coding: utf-8 -*-
import random
import time

class Personaje:
vida = 100
ataque = 100
curacion = 100
nombre = “”

#Constructor de la clase
def __init__(self, ataqueInicial, nombreInicial):
self.ataque = ataqueInicial
self.curacion = 100 – ataqueInicial
self.nombre = nombreInicial

def atacar(self):
dano = random.uniform(0.7, 1) * self.ataque
print self.nombre + ” ataca con fuerza de ” + str(dano)
return dano

def curar(self):
recuperar = (self.curacion * random.uniform(0.7, 1))
print self.nombre + ” se recupera con +” + str(recuperar)
self.vida = self.vida + recuperar

def perder(self, dano):
self.vida = self.vida – dano
print self.nombre + ” queda con vida de ” + str(self.vida)
if(self.vida < 1):
self.morir()

def morir(self):
print self.nombre + ” tiene ” + str(self.vida) + ” de vida.”
print self.nombre + ” ha muerto x_x”
quit()

print “\n” * 40
print “Heroes vs. Gatos”
print “*” * 20

enemigos = [“Salinas”, “Vader”, “Peje”, “Copete”, “Vegeta”]
enemigo = enemigos[random.randint(0,4)]
enemigo_ataque = random.randint(50,90)
nombre = raw_input(“¿Como llamaras a tu personaje? “).strip()
ataque = input(“¿Cuanto ataque quieres? [30-70] “)

heroe = Personaje(ataque, nombre)
monstruo = Personaje(enemigo_ataque, enemigo)
turno = random.randint(0,1)//IA

print “\n” * 4
print heroe.nombre + ” vs. ” + monstruo.nombre
print “\n” * 4
time.sleep(3)

while(1):
print “\n” * 5
print heroe.nombre + “: ” + str(heroe.vida)
print monstruo.nombre + “: ” + str(monstruo.vida)
print “\n” * 5
if(turno):
print “¿Que quieres hacer?”
eleccion = input(“1. Curarte 2. Atacar: “)
if(eleccion == 1):
heroe.curar()
else:
monstruo.perder( heroe.atacar() )
turno = 0
else:
eleccion = random.randint(1,2)//IA
if(eleccion == 1):
monstruo.curar()
else:
heroe.perder( monstruo.atacar() )
turno = 1
time.sleep(4)

¡Empezare a Publicar!

Este es un gran día para empezar ha decir que existo….!!!!

Tochihuitzin,
señor de Mexicaltzinco
(entre 1510-1520)
Cantares mexicanos

Kuicatl anyolke

Kuicatl anyolke,
xochitl ankueponke,
antepilwan,
ni zakatimaltzin, in Tochiwitzin,
ompa ye witze
xochimecatl.

Cual un canto habéis vivido,
cual una flor habéis brotado,
oh príncipes.
Yo soy Tochihuitzin que dejé la grama:
¡aquí va el sartal de mis flores!

What a song you have lived,
a flower which have sprung up,
O princes.
I am Tochihuitzin I left the program:
Here’s the string of my flowers!

Mi hermano el hombre

Amo el canto del Tzentzontle,

pájaro de cuatrocientas voces,

amo el color del jade y

el enervante perfume de las flores,

pero amo más a mi hermano, el hombre. “

“I love the song of Tzentzontle,
Bird of four hundred voices,
I love the color of jade and
the enervating perfume of flowers,
but I love more than my brother, man.