¿Cómo puedo formatear/sangrar automáticamente el código C en vim?
Cuando copio código de otro archivo, el formato es incorrecto, como este:
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
¿Cómo puedo formatear automáticamente este código en vim?
Pruebe las siguientes pulsaciones de teclas:
gg=G
Explicación: gg
va al principio del archivo, =
es un comando para corregir la sangría y G
le indica que realice la operación hasta el final del archivo.
Me gusta usar el programa Estilo Artístico. Según su sitio web :
Artistic Style es un indentador, formateador y embellecedor de código fuente para los lenguajes de programación C, C++, C# y Java.
Se ejecuta en Windows, Linux y Mac. Hará cosas como sangrar, reemplazar tabulaciones con espacios o viceversa, colocar espacios alrededor de las operaciones como desee (convirtiendo if(x<2)
a si ( x<2 )
así es como lo desea), colocar llaves en la misma línea que las definiciones de funciones o moverlas al línea a continuación, etc. Todas las opciones están controladas por parámetros de línea de comando.
Para usarlo en vim, simplemente configure la opción formatprg y luego use el comando gq. Entonces, por ejemplo, tengo en mi .vimrc:
autocmd BufNewFile,BufRead *.cpp set formatprg=astyle\ -T4pb
de modo que cada vez que abro un archivo .cpp, formatprg se configura con las opciones que me gustan. Luego, puedo escribir gg para ir al principio del archivo y gqGformatear todo el archivo según mis estándares. Si solo necesito reformatear una función, puedo ir a la parte superior de la función, luego escribir gq][y reformateará solo esa función.
Las opciones que tengo para un estilo -T4pb
son solo mis preferencias. Puede consultar sus documentos y cambiar las opciones para que formatee el código como desee.
Aquí hay una demostración. Antes de un estilo:
int main(){if(x<2){x=3;}}
float test()
{
if(x<2)
x=3;
}
Después de astyle (gggqG):
int main()
{
if (x < 2)
{
x = 3;
}
}
float test()
{
if (x < 2)
x = 3;
}
Ya se ha mencionado el comando incorporado para sangrar correctamente el código ( gg=G
). Si desea embellecer el código, necesitará utilizar una aplicación externa como sangría . Dado que %
denota el archivo actual en modo ex, puedes usarlo así:
:!indent %
Creo que clang-format
funciona bien.
Hay algunos ejemplos de combinaciones de teclas en la documentación de clang.
Prefiero usar el equalprg
enlace en vim. Esto le permite invocar clang-format
con G=gg
u otras =
opciones de sangría.
Simplemente coloque lo siguiente en su archivo .vimrc:
autocmd FileType c,cpp setlocal equalprg=clang-format