Otro de mis pequeños proyectos

Etiqueta: vi

Resaltado de sintaxis e indentación en vim

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

Abrir varios ficheros a la vez con vim

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 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

vimdiff, un diff de ficheros con vim para consola

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 😀

vimdiff en acción