17 / 10 / 2012
Wednesday

Una chuletilla de VI iMproved (vim)

La mejor forma de entender qué hace cada cosa es… probándola ;-)

Desplazamiento

  • Letra a letra: h / j / k / l
  • Palabras: inicio de palabra w / b, final e / ge
  • Comienzo / final línea: ^ / $
  • Letra dentro de una línea: fx / Fx
  • Avance en páginas: Ctrl-F / Ctrl-B
  • Paréntesis (o llave o corchete) asociado: %
  • Línea del fichero: xG / :x (G / :$ va directo al final del fichero), x% (porcentaje del fichero)
  • Saltos: Ctrl-O / Ctrl-I
  • marcas: mx, ‘x (marcas en minúscula son locales al fichero actual, en mayúscula permiten navegar por diferentes ficheros)

Información

  • :set number / nonumber: mostrar número de línea

Búsquedas

  • /patron ,  ?patron . n (siguiente aparición) \< y \> representan el comienzo y final de una palabra (para buscar palabras completas)
  • /patron/+2 -> la segunda linea despues de patron
  • :set ignorecase
  • :set hlsearch (destacar apariciones)
  • Palabra actual: * /  #
  • Reemplazar -> :%s_patron_sustitucion_g (cambiando g por c pide confirmación)
  • global -> :[rango]g/patron/comando – aplica comando en las lineas que dentro de rango coinciden con patrón
  • :grep -> buscar en varios ficheros. :cn mueve a la siguiente aparición
  • [I: -> mostrar las definiciones en ficheros incluidos que coinciden con la función actual

Insertar texto (i): I / A. Pulsando Ctl+n autocompleta en base a las palabras que haya en el documento.

Digrafos (Ctl+k): permiten introducir caracteres no soportados por defecto. Por ejemplo, ã sería Ctl+k ~ a

Abreviaturas

:ab sr señor

Asociar teclas

:map! â \^{a}

(map! aplica a los modos inserción y línea de comandos, map a normal, visual y selección)

Borrar (d). El texto borrado se lleva a un buffer (algo así como “Cortar”)

  • dl (x), dh (X)
  • dw
  • dd
  • d$ (D)
  • di< / dit borrar tag-blocks (util para HTML / XML)
  • text-objects: borrar cadenas entre comillas (di”), entre llaves (diB), paréntesis (dib)

Cambiar (c) / Sustituir (r)

  • cl (s)
  • cw
  • cc (S)
  • c$
  • R
  • Repetir el último cambio: .
  • cambiar mayúsculas / minúsculas: ~ (se puede usar con un bloque visual)

Deshacer (u), rehacer (Ctrl-R), :earlier 5m (volver al estado del fichero hace 5 minutos)

Formato de líneas:

Las variables tw y fo controlan el ajuste automático de línea. Por ejemplo, para 90 columnas:

:set tw=90
:set fo+=t
# Para desabilitar el ajuste, usar set fo-=t

Si el texto ya está insertado, se puede ajustar párrafo a párrafo con el comando gqap

Modo visual:

  • letra a letra (v), líneas (V), rectángulo/columnas (Ctrl-V), cambio de lado (o)
  • rx: rellena el bloque con la letra x
  • > / < : indenta el bloque
  • text objects: vi’, viB, vib…

El modo columna (Ctrl-V) es util para indentar con espacios, o para eliminar el principio de varias lineas que comienzan con el mismo texto.

Copiar (y): yw, yy; “*yy (portapapeles).

Pegar (Colocar): p/P, “*p (portapapeles),

Registros: “xyy (copiar al registros x), “xp (pegar registro x), “xd (cortar al registro x). Los registros numerados contienen un histórico automático de lo que se ha copiado con yy a secas. Por ejemplo, “0p pega lo último copiado. :reg muestra los registros. Más sobre registros.

Destaque de sintaxis:

  • :syntax enable

Autocompletado

  • “omni”: ctl-x ctl-o

Ficheros:

  • (:w)rite, :wall
  • (:q)uit, :qall
  • :wq, :wqall
  • (:n)ext file
  • (:p)revious file

Edición varios ficheros a la vez: ventanas y pestañas

  • :next, :previous, Ctl-^
  • :split, vim -O / :vsplit : división horizontal / vertical (mismo fichero). Para desplazarse simultaneamente en las ventanas, hay que ejecutar :set scrollbind en cada una
  • Ctrl-w Ctrl-w: cambiar de ventana en secuencia
  • Ctrl-w h / j / k / l : desplazarse de una ventana a otra
  • Ctrl-+ / Ctrl– : cambiar tamaño ventana
  • :tabedit, :tab split, vim -p
  • gt: cambiar de pestaña en secuencia, :tabp / Ctrl-RePag, :tabN / Ctrl-AvPag
  • :close

Macros

  • qxcomandosq: grabar macro en registro x (los mismos de más arriba)
  • @x: ejecutar macro x
  • @@: ejecutar última macro

Plugins interesantes:

  • pathogen: gestor de plugins
  • syntaxtic: corrección de errores en codigo
  • CtrlP: busqueda por ficheros
Comments are closed.

"El credo del lobo: Respeta a los mayores. Enseña a los jóvenes. Coopera con el grupo. Juega cuando puedas. Caza cuando debas. Entre tanto, descansa. Comparte tus afectos. Expresa tus sentimientos. Deja tu huella." - Del Goetz. Más citas