Dic 28 2009

Resaltado de sintaxis e indentación en vim

tatai

He decidido que voy a realizar una serie de posts con aquello que tanto me han pedido unos cuantos amigos, que “enseñe algunos de esos comandos que me sé”. La verdad es que la mayoría de ellos son comandos sencillos pero que, usando un par de opciones y concatenando unos con otros, se pueden hacer verdaderas maravillas.

Y para empezar, un par de trucos muy sencillos para vim con lo que sé que más de uno levantará los brazos al cielo con resignación, jeje. Se da por hecho que sabes cambiar entre los distintos modos: comando, edición, visual…

Resaltado de sintaxis

Con este comando podrás activar (como será el caso de la mayoría de vosotros) o desactivar (lo que yo prefiero, jeje), el resaltado de sintaxis -syntax highlighting- de los ficheros que estéis editando en vim.

Partiendo siempre en modo comando, podemos activar o desactivar:

Para activar el resaltado de sintaxis

:set syntax on

Y para desactivar

:set syntax off

Tienes que tener en cuenta que para reconocer a que lenguaje pertenece, vim se basa en la extensión. Si todavía no has grabado el fichero o tiene una extensión distinta a la que debería tener, no será capaz de identificar nada.

Indentación

Para la indentación, todo depende de gustos pero yo prefiero usar tabs y que el tamaño del tab (el número de espacios no físicos que ocupa) es de 8 columnas. Esta es la configuración por defecto.

Para activar la indentación, en modo comando hay que teclear:

:set autoindent
:set smartindent

En caso de querer desactivar cualquiera de las dos, tenéis que añadir el prefijo no- a la opción usando la misma sintaxis, es decir, usar “noautoindent” o “nosmartindent” respectivamente.

Más info

Del manual de vim


Jun 21 2009

Migrar fácilmente el selector dolar a document.id (mootools 1.2.3)

tatai

Voy a contar un par de sencillos comandos que os ayudarán si queréis migrar todos vuestros selectores dolar ($) a la nueva forma definida en mootools 1.2.3: document.id.

La primera forma es ejecutar un comando desde la línea de comandos. Todo lo que necesitas es tener instalado perl en tu sistema. Este es el comando (cambia fichero.js por el nombre de tu fichero javascript):

perl -i -pe 's/([^\$])\$\(/$1document.id(/g;' fichero.js

Quizás prefieras usar -i.old en vez de -i que hará una copia de tu fichero original fichero.js a fichero.js.old. De esta forma, mantienes una copia de tu fichero original.

Por supuesto este comando se puede usar con otros como find de modo que puedas migrar más de un fichero a la vez:

for i in $( find /path/a/tu/directorio/js -iname '*.js' ); do perl -i -pe 's/([^\$])\$\(/$1document.id(/g;' $i; done

Finalmente, para todos aquellos que como yo usen y prefieran vim, voy a mostrar como se hace el cambio con vim. Asegúrate que estas en el modo-comando (presiona varias veces la tecla <Esc>) y escribe:

:%s/\([^\$]\)\$(/\=submatch(1) . "document.id("/g

Y eso es todo! Disfruta de tu nuevo código que cumple con la especificación de compatibilidad entre frameworks javascript.


Jun 21 2009

Easy migrating dolar selector to document.id (mootools 1.2.3)

tatai

I would like to show you a pair of easy command that will help you if you want to change all your dolar selectors ($) to the new defined document.id in mootools 1.2.3.

The first way can be executed from command line. All you need is having perl on your system. This is the command (change your_file.js to the filename that fits your needs):

perl -i -pe 's/([^\$])\$\(/$1document.id(/g;' your_file.js

Perhaps you will prefer to use -i.old instead -i that will copy your original file your_file.js to your_file.js.old. In this way, you get a backup of your original file.

Of course, this command can be used with others like find so you can migrate more files at once:

for i in $( find /path/to/your/js/files -iname '*.js' ); do perl -i -pe 's/([^\$])\$\(/$1document.id(/g;' $i; done

Finally, for those vim lovers like me, I would like to show you how to make this change inside vim. In command-mode (press <Esc> a pair of times) write:

:%s/\([^\$]\)\$(/\=submatch(1) . "document.id("/g

And that’s all! Enjoy your new brand cross-framework compliant code.


May 28 2009

Abrir varios ficheros a la vez con vim

tatai

Cuando queremos abrir varios ficheros a la vez desde la consola, la forma más habitual es la de escribir el comando vim y después añadir cada uno de los ficheros separados por al menos un espacio. De esta forma, mediante los comandos :next y :previous (recordar pulsar <Esc> antes de introducir comandos) podemos pasar de un fichero a otro.

Esto está bien cuando no te importa tenerlas en ventanas distintas, ¿pero y si queremos tenerlos todos a la vista a la vez? Bien, una de las formas es decirle a vim que no abra cada una en una ventana distinta, sino mediante horizontal splits, es decir, que si tenemos dos ficheros abiertos, cada uno ocupa la mitad de la pantalla (en horizontal).

Para conseguir esto, lo único que tenemos que hacer es escribir en la consola vim -o y luego todos y cada uno de los ficheros separados al menos por un espacio. Es decir, lo haremos con la opción -o (letra o minúscula). Tal que así:
vim -o fichero1.txt fichero2.txt fichero3.txt
Bien, todo tiene un límite. Vim abrirá tantos ficheros como le indiqueis… pero es evidente que si abrís muchos a la vez, no tendremos espacio para verlos.
Ideal para usar con algunos scripts :)

vim con la opción -o

vim con la opción -o


Jul 22 2007

vimdiff, un diff de ficheros con vim para consola

tatai

Leo en DiarioLinux sobre la interesante aplicación vimdiff. Es un diff de ficheros de modo que podemos extraer las diferencias que tienen varios ficheros entre sí, pero la gran diferencia es que lo veremos sobre un vim con un split vertical y con scroll en paralelo!

Es decir, en cada split nos muestra uno de los ficheros, indicando con colores los cambios y si nos desplazamos por el fichero hacia abajo, los splits se moverán simultáneamente para mostrarnos las mismas líneas en ambos ficheros. Lo más habitual es comparar un fichero con otro, pero permite comparar hasta con 3 versiones distintas más.

Tan fácil como teclear en la consola vimdiff y seguidamente los ficheros que queremos comparar separados con espacios. Es decir, la sintaxis es:
vimdiff file1 file2 [file3 [file4]]
 También de forma equivalente, podemos llamarlo directamente desde vim con la opción -d:
 vim -d file1 file2 [file3 [file4]]
La verdad es que existen varias aplicaciones para hacer esto de forma visual con las X, pero es la primera que he visto con la que se puede hacer por consola y por lo tanto, con independencia de donde estés, sólo hace falta una consola y un SSH. Reconozco que soy un fanático del vim, pero la verdad es que me ha parecido muy útil.

Lo mejor es probarlo :D

vimdiff en acción