Indentar archivos con VIM desde consola

Primero creamos una macro donde quedará grabada la secuencia de teclas:

vim -w indent.macro archivoquesea.cc

Escribimos directamente

gg=G:wq

y le damos a Enter. Esto creará el archivo

indent.macro

Para usar esta macro sobre un archivo:

vim -s indent.macro archivoaindentar.cc

Podemos crear un script (por ejemplo

indent.sh

) para que indente los archivo que querramos:

#!/bin/bash

array=(*.cc *.hh)

for filename in "${array[@]}"; do
    vim -s indent.macro "$filename"
done

Fuentes: http://stackoverflow.com/questions/3218528/indenting-in-vim-with-all-the-files-in-folder
http://www.cyberciti.biz/faq/bash-for-loop-array/

Sangrar muchos archivos a la vez con vim

Si queremos sangrar (en inglés indent) muchos archivos a la vez.

Primero abrimos los archivos que queramos, por ejemplo

vim -p *.c

. Ya en vim, escribiremos lo siguiente:

:set hidden
:argdo normal gg=G
:wqall

La primera línea es para que no nos pida confirmación al cambiar de archivo para sangrar. La segunda es la que realiza el sangrado y la última guarda todos cambios realizados en los archivos.

Cambiar la codificación de un archivo a UTF-8

Para pasar el archivo a UTF-8 con VIM hay que editar el archivo y poner:

:set fenc=utf8

Con esto solucionarás el problema de mostrar caracteres extraños en páginas web si tienes Apache configurado con

AddDefaultCharset UTF-8

en

/etc/apache2/conf.d/charset

Más información: http://mindspill.net/computing/linux-notes/determine-and-change-file-character-encoding.html

Actualización: Es recomendable no habilitar

AddDefaultCharset UTF-8

en Apache. En su lugar, hay que usar etiqueta meta de HTML:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Exportar un archivo a HTML desde vim

Una vez abierto un archivo con vim, podemos exportarlo a HTML con el siguiente comando dentro de vim:

:so  $VIMRUNTIME/syntax/2html.vim

Ahí veremos que se abre un nuevo buffer con el código HTML, el cual salvaremos con:

:wq

Si usamo un fondo negro en la consola, es posible que el HTML salga con fondo blanco y que los colores de las palabras se vean mal. Para eso, se puede modificar para que ponga un fondo negro en en HTML. Editamos el archivo

/usr/share/vim/vimcurrent/syntax/2html.vim
439c439
<   let s:fgc = ( &amp;background == "dark" ? "#ffffff" : "#000000" )
---
>   let s:fgc = ( &amp;background == "dark" ? "#ffffff" : "#ffffff" )
442c442
<   let s:bgc = ( &amp;background == "dark" ? "#000000" : "#ffffff" )
---
>   let s:bgc = ( &amp;background == "dark" ? "#000000" : "#000000" )