format - tengo - ¿Cómo se alinea un código(llaves, parens, etc.) en vi?
se me perdio la llave del auto y no tengo copia (3)
¿Cómo puedes prettificar / alinear / formatear el código en vi? ¿Cuál es el comando?
He pegado en un trozo de código y necesito tenerlo todo formateado / alineado ... obviamente soy un vi neófito.
X
Si al ajustar manualmente las sangrías, abriré un bloque visual con V
en la primera o la última línea que deseo volver a sangrar, pasaré a la llave que contiene el bloque, pasar a la otra llave con %
luego cambiar la línea con >
o <
Si las sangrías están descompuestas por mucho, cambiaré todo a la izquierda con <
y lo repetiré con .
y luego volver a sangrar todo.
Otra solución es usar el comando fmt
unix como se describe en Su problema con Vim es que no debe asimilar vi. , {!}fmt
={motion}
:h =
PS No debes usar vi si vim está disponible.
Estos comandos en mi respuesta funcionan en vim. La mayoría de las personas que piensan que están usando vi están usando vim. Para saber si su ''vi'' es realmente ''vim'', abra vi y escriba :version
- si es vim, lo dirá. De lo contrario, podría ver un número de versión sin el nombre del programa. Además, cuando abre vim por primera vez, generalmente verá una pantalla de inicio de algún tipo que dice "VIM - VI iMproved" ...
Sangría automática
Para activar la sangría automática, asegúrese de que vim sepa el tipo de archivo que está editando (por lo general, esto lo detecta automáticamente desde la extensión del nombre del archivo, pero puede que no lo descubra con algunos tipos de archivos). Puede indicarle el tipo de archivo usando los menús para resaltar la sintaxis. Entonces, haz esto:
:filetype indent on
Puede deshabilitar la sangría automática con
:filetype indent off
Ajuste / corrección automática de la muesca
En general, = {movimiento} alineará el código a un nivel de sangría.
-
==
alinear la linea actual -
=i{
alinear el bloque interior -
=%
alinea con el paréntesis / corchete correspondiente debajo del cursor -
=14j
o14==
alinea las siguientes 14 líneas -
=G
alinea al final del archivo -
vG=
mismo, alinear con el final del archivo (pero usando el modo visual) -
vjjj=
alinear cuatro líneas (usando el modo visual)
Sangría manual
Si vim no está adivinando correctamente el nivel de sangría, hay dos maneras de cambiarlo:
- Si está en el modo normal (donde todo es un comando), haga
<<
para desplazar una línea a la izquierda, o>>
para desplazarla hacia la derecha una pestaña. Puede hacer esto con varias líneas usando los mismos comandos de movimiento que mostré anteriormente (por ejemplo,>i{
sangra el bloque de código interno actual). - Si está en el modo de inserción, puede sangrar más la línea (sin mover el cursor) haciendo Ctrl-T , o desdentar una pestaña con Ctrl-D
Alinear es igual a signos, etc.
Si desea alinear los signos de igual en una lista de declaraciones, debe considerar usar este script vim: http://www.vim.org/scripts/script.php?script_id=294
Ajuste de sangría / tamaño de las pestañas
Si desea que vim use espacios en lugar de tabulaciones cuando haga sangría, ejecute este comando (o considere agregarlo a su archivo vimrc)
:set expandtab
Para establecer cuántos espacios son iguales a una pestaña, normalmente hago esto:
:set expandtab softtabstop=3 tabstop=3 shiftwidth=3
- tabstop: cuántas columnas cuenta una pestaña (afecta a la visualización de los caracteres de tabulación existentes)
- shiftwidth: controla el tamaño de la reindentación con << y >>, entre otros comandos.
- softtabstop: cuánto espacio para insertar cuando presiona la tecla de tabulación
- expandtab - expandir las teclas de tabulación a espacios
Pero si tiene que trabajar mucho con diferentes cantidades de pestañas, también podría usar esta función y el enlace de teclas:
function! Ktabs(tabsize)
execute "set softtabstop=" . a:tabsize . " tabstop=" . a:tabsize . " expandtab shiftwidth=" . a:tabsize
"set softtabstop=a:tabsize tabstop=a:tabsize expandtab shiftwidth=a:tabsize
endfunction
noremap <leader><Tab> :call Ktabs(3)<Left>
Si está editando un archivo con una combinación de tabulaciones y espacios, puede utilizar este comando después de configurar el tamaño de la pestaña:
:retab