Debería ser trivial, e incluso podría estar en la ayuda, pero no puedo entender cómo navegarlo. ¿Cómo sangro varias líneas rápidamente en vi?
vim
editor
indentation
vi
Allain Lalonde
fuente
fuente
shiftwidth
configuración para saber cómo cambiar eso.Esta respuesta resume las otras respuestas y comentarios de esta pregunta, y agrega información adicional basada en la documentación de Vim y el wiki de Vim . Para ser concisos, esta respuesta no distingue entre los comandos específicos de Vi y Vim.
En los comandos a continuación, "re-sangría" significa "líneas de sangría de acuerdo con su configuración de sangría ".
shiftwidth
es la variable primaria que controla la sangría.Comandos generales
Puede reemplazar
{
con}
oB
, por ejemplo,=iB
es un comando de sangría de bloque válido. Eche un vistazo a "Sangría un bloque de código" para ver un buen ejemplo para probar estos comandos.Además, recuerda que
, por lo que los comandos de sangría se pueden repetir fácil y convenientemente.
Re-sangría de archivos completos
Otra situación común requiere que se corrija la sangría en un archivo fuente:
Puede extender esta idea a varios archivos:
O múltiples buffers:
En modo visual
En modo de inserción
Estos comandos se aplican a la línea actual:
Comandos ex
Estos son útiles cuando desea sangrar un rango específico de líneas, sin mover el cursor.
Sangría utilizando marcadores
Otro enfoque es a través de marcadores :
... mover el cursor a la ubicación final
Variables que gobiernan la sangría
Puede configurarlos en su archivo .vimrc .
Vim tiene una sangría inteligente basada en el tipo de archivo. Intente agregar esto a su .vimrc:
Referencias
:help =
fuente
>}
. Muchas graciasUna gran selección sería:
Es realmente rápido, y todo se sangra ;-)
fuente
gg=G
simplemente coloca cada línea a partir de la posición 1. Se han eliminado todos los espacios en blanco. ¿Hay algo más específico para XML?set cindent
debería estar en vimrc o debería ejecutarse:set cindent
antes de ejecutar ese comandoPruebe también esto para la sangría de sangría en C. Haz
:help =
para más información:={
Eso sangrará automáticamente el bloque de código actual en el que se encuentra.
O solo:
==
para sangrar automáticamente la línea actual.
fuente
Pulsaciones de teclas para personas más visuales:
Ingrese al modo de comando:
Escape
Muévase al comienzo del área para sangrar:
hjkl↑↓←→
Comience un bloque:
v
Muévase hasta el final del área para sangrar:
hjkl↑↓←→
(Opcional) Escriba el número de niveles de sangría que desee
0..9
Ejecute la sangría en el bloque:
>
fuente
El maestro de todos los comandos es
gg=G
¡Esto sangra todo el archivo!
Y a continuación se muestran algunos de los comandos simples y elegantes utilizados para sangrar líneas rápidamente en Vim o gVim.
Para sangrar la línea actual
==
Para sangrar todas las líneas debajo de la línea actual
=G
Para sangrar
n
líneas debajo de la línea actualn==
Por ejemplo, para sangrar 4 líneas debajo de la línea actual
4==
Para sangrar un bloque de código, vaya a una de las llaves y use el comando
=%
Estos son los comandos más simples pero potentes para sangrar varias líneas.
fuente
vim
, novi
.vim
que está vinculadovi
?Además de la respuesta ya dada y aceptada, también es posible colocar un marcador y luego sangrar todo, desde el cursor actual hasta el marcador.
Por lo tanto, ingrese
ma
donde desea la parte superior de su bloque sangrado, desplace el cursor hacia abajo todo lo que necesite y luego escriba>'a
(tenga en cuenta que "a
" se puede sustituir por cualquier nombre de marcador válido). Esto a veces es más fácil que5>>
ovjjj>
.fuente
Ir al inicio del texto.
fuente
Además de las soluciones ofrecidas, me gusta hacer las cosas un párrafo a la vez con
>}
fuente
Cuando selecciona un bloque y lo usa >para sangrar, sangra y luego vuelve al modo normal. Tengo esto en mi archivo .vimrc:
Le permite sangrar su selección tantas veces como desee.
fuente
Suponga que usa 2 espacios para sangrar su código. Tipo:
Entonces:
Tienes la idea.
( Las líneas vacías no se sangrarán, lo que creo que es agradable ) .
Encontré la respuesta en la documentación (g) vim para los bloques de sangría:
:'<,'>le4
insertar los espacios. ¡Gracias!:set number
para alternar los números de línea (están desactivados de forma predeterminada) o ponerset number
en su vimrc.vim-prettier
lugar del motor de sangría predeterminado). De>
lo contrario, el uso ralentizará el formato realizado por Prettier.La belleza de la interfaz de usuario de Vim es su consistencia. Los comandos de edición están compuestos por el comando y un movimiento del cursor. Los movimientos del cursor son siempre los mismos:
'
.Entonces, para usar vim, debe aprender a mover el cursor y recordar un repertorio de comandos como, por ejemplo, >sangrar (y <"saliente").
Por lo tanto, para sangrar las líneas desde la posición del cursor hasta la parte superior de la pantalla >H, >Gsangra hasta la parte inferior del archivo.
Si, en lugar de escribir >H, escribe , dHestá eliminando el mismo bloque de líneas, cHpara reemplazarlo, etc.
Algunos movimientos del cursor se ajustan mejor con comandos específicos. En particular, el %comando es útil para sangrar un bloque HTML o XML completo. Si el archivo tiene la sintaxis resaltada (
:syn on
), entonces establezca el cursor en el texto de una etiqueta (como, en la "i" de <div> y al ingresar >%sangrará hasta la etiqueta de cierre </div>.Así es como funciona Vim: uno tiene que recordar solo los movimientos del cursor y los comandos, y cómo mezclarlos. Entonces, mi respuesta a esta pregunta sería "ir a un extremo del bloque de líneas que desea sangrar, y luego escribir el >comando y un movimiento al otro extremo del bloque" si sangría se interpreta como desplazamiento de las líneas, =si sangría se interpreta como en bonita impresión.
fuente
Hacer esto:
Y agregue esta línea:
Esto es solo para un archivo cpp. Puede hacer esto para otro tipo de archivo, también simplemente modificando el tipo de archivo ...
fuente
Puede usar el
norm i
comando para insertar texto dado al comienzo de la línea. Para insertar 10 espacios antes de las líneas 2-10:Recuerde que tiene que haber un carácter de espacio al final del comando; este será el carácter que queremos insertar. También podemos sangrar una línea con cualquier otro texto, por ejemplo, sangrar cada línea en un archivo con cinco caracteres de subrayado:
O algo aún más elegante:
Un ejemplo más práctico es comentar el código Bash / Python / etc con el carácter #:
Para volver a sangrar el uso en xlugar de i. Por ejemplo, para eliminar los primeros 5 caracteres de cada línea:
fuente
Una forma rápida de hacer esto usando
VISUAL MODE
el mismo proceso que comentar un bloque de código.Esto es útil si prefiere no cambiar sus directivas
shiftwidth
o utilizar ningunaset
directiva y es lo suficientemente flexible como para trabajar con TABS o SPACES o cualquier otro personaje.-- VISUAL MODE --
:
para cambiar a la solicitudSustitución por 3 espacios principales:
:'<,'>s/^/ /g
O reemplazando con pestañas iniciales:
:'<,'>s/^/\t/g
Breve explicacion:
'<,'>
- Dentro del rango visualmente seleccionados/^/ /g
- Inserte 3 espacios al comienzo de cada línea dentro de todo el rango(o)
s/^/\t/g
- InsertarTab
al principio de cada línea dentro de todo el rangofuente
>}
o>{
sangrar desde la línea actual hasta el siguiente párrafo<}
o la<{
misma sangríafuente
Me gusta marcar texto para sangrar:
PD: puede usar la :'a,'ztécnica para marcar un rango para cualquier operación (d, y, s ///, etc.) donde puede usar líneas, números o %.
fuente
:help left
En
ex mode
puede usar:left
o:le
para alinear líneas una cantidad especificada. Específicamente,:left
se líneas Alinear a la izquierda en la [rango]. Establece la sangría en las líneas en [sangría] (valor predeterminado 0).:%le3
o:%le 3
o:%left3
o:%left 3
alineará todo el archivo rellenando con tres espacios.:5,7 le 3
alineará las líneas 5 a 7 rellenándolas con tres espacios.:le
sin ningún valor o:le 0
se alineará con un relleno de 0.Esto funciona en Vim y gVim.
fuente
:'<,'>le4
insertar los espacios. ¡Gracias!Para mí, la solución MacVim (Visual) fue, seleccione con el mouse y presione ">", pero después de poner las siguientes líneas en "~ / .vimrc" ya que me gustan los espacios en lugar de las pestañas:
También es útil poder llamar a MacVim desde la línea de comandos (Terminal.app), por lo que tengo el siguiente directorio auxiliar "~ / bin", donde coloco un script llamado "macvim":
Y, por supuesto, en "~ / .bashrc":
MacPorts se mete mucho con "~ / .profile", por lo que la variable de entorno PATH puede ser bastante larga.
fuente
5==
sangrará cinco líneas desde la posición actual del cursor.Entonces puede escribir cualquier número antes
==
. Sangrará el número de líneas. Esto está en modo comando.gg=G
sangrará todo el archivo de arriba a abajo.fuente
No encontré un método que utilizo en los comentarios, así que lo compartiré (creo que solo Vim):
Esto es útil cuando no desea cambiar las configuraciones de sangría / tabulación
vimrc
o recordarlas para cambiarlas durante la edición.Para eliminar la sangría, uso el mismo Ctrl+ Vbloque de selección para seleccionar espacios y eliminarlo con D.
fuente
No sé por qué es tan difícil encontrar una respuesta simple como esta ...
Yo mismo tuve que luchar mucho para saber esto. Es muy simple:
.vimrc
archivo en el directorio de inicio.Agrega esta línea
en su archivo donde desea sangrar correctamente.
En modo normal / comando escriba
fuente
Por ejemplo,
Aumente el símbolo '>' para más pestañas.
Por ejemplo,
fuente
:set number
para alternar los números de línea (están desactivados de forma predeterminada) o ponerset number
en su vimrc.Usando mucho Python, me encuentro con la necesidad frecuente de cambiar bloques por más de una sangría. Puede hacerlo utilizando cualquiera de los métodos de selección de bloque y luego simplemente ingrese el número de sangrías que desea saltar justo antes de
>
Por ejemplo,
V5j3>
sangrará cinco líneas tres veces, que son 12 espacios si usa cuatro espacios para sangrías.fuente
Para sangrar cada línea en un tipo de archivo, Escy luego G=gg.
fuente
Cómo sangrar el código resaltado en vi inmediatamente por varios espacios:
Opción 1: sangra un bloque de código en vi a tres espacios con el modo Visual Block:
Seleccione el bloque de código que desea sangrar. Haga esto usando Ctrl+Vel modo normal y haciendo flechas hacia abajo para seleccionar texto. Mientras está seleccionado, ingrese
:
para dar un comando al bloque de texto seleccionado.Lo siguiente aparecerá en la línea de comando:
:'<,'>
Para establecer la sangría en tres espacios, escriba
le 3
y presione Intro. Esto es lo que aparece::'<,'>le 3
El texto seleccionado se sangra inmediatamente a tres espacios.
Opción 2: sangra un bloque de código en vi a tres espacios con el modo Visual Line:
Estar en modo normal y presionar las siguientes teclas:
Interpretación de lo que hiciste:
V
significa comenzar a seleccionar texto.jjjj
flechas hacia abajo cuatro líneas, resaltando cuatro líneas.:
le dice a vi que ingresará una instrucción para el texto resaltado.le 3
significa sangrar texto resaltado tres líneas.El código seleccionado se aumenta o disminuye inmediatamente a tres espacios de sangría.
Opción 3: use el modo Bloque visual y el modo de inserción especial para aumentar la sangría:
En modo normal, presione las siguientes teclas:
Ctrl+V
(presione la barra espaciadora cinco veces)
Esc Shift+i
Todo el texto resaltado tiene una sangría adicional de cinco espacios.
fuente
Yo uso la selección visual en modo bloque:
I
( Shift+ I) para ingresar al modo de inserción.Esto no es uni-tasker. Funciona:
c
lugar deI
).fuente
vim-prettier
lugar del motor de sangría predeterminado). De>
lo contrario, el uso ralentizará el formato realizado por Prettier.Para un bloque de código, {}: =+%
Para una línea seleccionada: Shift+ vseleccione usando las teclas de flecha arriba / abajo, y luego presione =.
Para todo el archivo: gg+ =+G
Nota: 'gg' significa ir a la línea 1, '=' es el comando de sangría y 'G' mueve el cursor al final del archivo .
fuente
Para sangrar todo el archivo por cuatro:
fuente
Fuente: https://www.fir3net.com/UNIX/General/how-do-i-tab-multiple-lines-within-vi.html
fuente