Vim con shell integrada

Seguimos con configuraciones que hacen de Vim, en mi opinión, un potente IDE. El de hoy es un truquito que permite integrar una terminal dentro de un buffer Vim. Así podréis teclear lo que queráis en uno de los buffers (el superior, por ejemplo) y en el inferior tener abierto el intérprete Bash 🙂 Podéis ver el resultado en la imagen adjunta. Así no tendréis que hacer uso de GNU-Screen o similares.

El procedimiento es sencillo. Basta con instalar el plugin Conque Shell. Y la instalación es de lo más sencillo. Descarga de la URL anterior el fichero Conque Shell.vba (es un archivo Vim Ball, un formato estándar para plugins Vim). Ábrelo en Vim (o en GVim) y teclea

:so %

¡Listo! Ya está instalado el plugin 🙂 Para abrir una nueva shell Bash en la ventana inferior, teclea:

:ConqueTermSplit bash

Hay más comandos y configuraciones Conque que puedes ver en la web del plugin.

Vim: F3 compilar, F4 ejecutar

Para desarrollo uso indistintamente como IDE Eclipse (un verdadero IDE, al que una vez que te acostumbras ya es difícil dejarlo) y Vim. Alguien podría decir que Vim no puede ser considerado un IDE… tal vez sea así, pero desde luego teniendo en cuenta todas las ayudas que ofrece para el desarrollador (ctags, autocompletamiento, gestión de archivos, múltiples buffers en una única ventana, pestañas, code-beautifiers, code-folding, marcadores, plugins…) la frontera entre ser un simple editor de texto y/o un completo IDE de desarrollo cada vez es más difusa. Intentaré comentar en distintos posts algunas de las características que hacen de Vim, en mi opinión, un potente entorno de desarrollo (a costa de tener que aprenderse múltiples comandos y combinaciones de teclas así como de tener un interfaz «bastante» austero, cosa que a veces es bueno y nos permite centrarnos en nuestro código sin distracciones).

Para empezar un sencillo «truco» que permite asignar a la tecla F3 la orden de compilar el código de un programa C, y a la tecla F4 ejecutarlo, todo ello sin abandonar Vim (antes tenía que tener otra ventana abierta, guardar en Vim, compilar en la otra ventana con gcc y ejecutar, en su caso, para volver a la ventana Vim a seguir editando, un tostón vaya). A la chicha: ¿cómo hacer la asignación de teclas? Basta con que en tu archivo $HOME/.vimrc guardes lo siguiente:

map <F3> : call CompileGcc()<CR>
func! CompileGcc()
  exec "w"
  exec "!gcc % -o %<"
endfunc
 
map <F4> :call CompileRunGcc()<CR>
func! CompileRunGcc()
  exec "w"
  exec "!gcc % -o %<"
  exec "! ./%<"
endfunc

Tip: cosas que no sabías del comando top

El comando top sirve para (entre otras cosas) pode ver, de forma ordenada, un listado de los procesos actualmente en ejecución, en función de distintos criterios: consumo de CPU, consumo de memoria RAM, tiempo que llevan ejecutándose, PID…

Lo que tal vez no sabías era que puedes cambiar el criterio de ordenación pulsando las teclas «<" y/o ">» para moverte en los criterios/columnas hacia la izquierda o derecha. Para ver qué columna es la que ha fijado el criterio lo mejor es que pulses la tecla Z que permite ver en color la pantalla del top (las columnas aparecerán en rojo salvo la columna/criterio actual, que aparecerá en blanco). Para ordenar de forma creciente o decreciente, pulsa «R».

Cambiar el fondo de un PDF

Truco enviado por el profesor Gorka Prieto a la lista ITSAS:

Por si a alguien más le ha pasado que tiene que imprimir un PDF con fondo
oscuro (estos profes que dan las transparencias con cualquier formato … ;P)
y quiere ponerle un fondo blanco:

$ convert -density 300 input.pdf -fill "rgb(255,255,255)" -opaque
"rgb(29,5,114)" output.pdf

Enviar email con curl y GMail

Hago copy&paste de una entrada recibida hoy en CommandLineFu.com (una de las webs más útiles para el administrador de sistemas Linux, btw…)
curl -n --ssl-reqd --mail-from "<user@gmail.com>" --mail-rcpt "<user@server.tld>" --url smtps://smtp.gmail.com:465 -T file.txt
Sí, yo he pensado lo mismo, ¡aaargh! ¡cuántas veces necesité esto y me lié con el comando mail, la configuración de Sendmail, postfix, qmail o the kitchen sink…
El comando anterior requiere una versión de curl>=7.21  . Para guardar las credenciales, usad el fichero .netrc