Cuando copio código de otro archivo, el formato está mal, así:
fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}
¿Cómo puedo autoformar este código en vim?
c
vim
code-formatting
Yongwei Xing
fuente
fuente
Respuestas:
Pruebe las siguientes teclas:
Explicación:
gg
va al principio del archivo,=
es un comando para corregir la sangría yG
le dice que realice la operación hasta el final del archivo.fuente
Me gusta usar el programa Artistic Style. Según su sitio web :
Se ejecuta en Windows, Linux y Mac. Hará cosas como sangría, reemplazando pestañas con espacios o viceversa, colocando espacios alrededor de las operaciones como desee (convirtiendo
if(x<2)
a si( x<2 )
así es como le gusta), colocando llaves en la misma línea que las definiciones de función o moviéndolas a línea debajo, 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:
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 de acuerdo con mis estándares. Si solo necesito reformatear una sola 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 del estilo:
Después de un estilo (gggqG):
Espero que ayude.
fuente
El comando incorporado para sangrar correctamente el código ya se ha mencionado (
gg=G
). Si desea embellecer el código, deberá usar una aplicación externa como sangría . Como%
denota el archivo actual en modo ex, puede usarlo así:fuente
El complemento vim-autoformat le permite formatear su búfer (o selecciones de búfer) con un solo comando: https://github.com/Chiel92/vim-autoformat . Utiliza programas de formato externo para eso, con un respaldo a la funcionalidad de sangría de vim.
fuente
Me parece 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 invocarclang-format
conG=gg
u otras=
opciones de sangría.Simplemente ponga lo siguiente en su archivo .vimrc:
fuente
sudo apt install clang-format
Quizás pueda intentar lo siguiente $ indent -kr -i8 * .c
Espero que sea útil para ti!
fuente
Me gusta
indent
como se mencionó anteriormente, pero la mayoría de las veces quiero formatear solo una pequeña sección del archivo en el que estoy trabajando. Comoindent
puede tomar código de stdin, es realmente simple::!indent
.astyle
también toma stdin, por lo que puedes usar el mismo truco allí.fuente
Quería agregar que, para evitar que se estropee en primer lugar, puede escribir
:set paste
antes de pegar. Después de pegar, puede escribir:set nopaste
para que cosas como js-beautify y sangría funcionen nuevamente.fuente
:set paste!
para esto, que alterna el valor de pegar en lugar de configurarlo. Esto hace que sea más fácil apagarlo, ya que puede simplemente retroceder algunos comandos y presionar enter.Su es una herramienta llamada
indent
. Puede descargarlo yapt-get install indent
luego ejecutarloindent my_program.c
.fuente