En Vim, ¿cuál es el comando para corregir la sangría de todas las líneas?
Muchas veces copio y pego el código en un terminal remoto y lo arruino todo. Quiero arreglar esto de una sola vez.
En Vim, ¿cuál es el comando para corregir la sangría de todas las líneas?
Muchas veces copio y pego el código en un terminal remoto y lo arruino todo. Quiero arreglar esto de una sola vez.
Respuestas:
=
, el comando de sangría puede tomar movimientos. Por lo tanto, gg
para obtener el inicio del archivo, =
al guión, G
al final del archivo, gg=G
.
''
(dos comillas simples) te lleva de regreso a donde estabas, así que gg=G''
debes sangrar y luego regresar.
Antes de pegar en la terminal, intente :set paste
y luego una :set nopaste
vez que haya terminado. Esto desactivará la sangría automática, el ajuste de línea y otras características que están estropeando su pegado.
editar: Además, debo señalar que, por lo =
general, se puede obtener un resultado mucho mejor que la sangría utilizando un programa externo. Por ejemplo, corro :%!perltidy
todo el tiempo. astyle
, cindent
, Etc. también pueden ser utilizados. Y, por supuesto, puede asignarlos a una pulsación de tecla y asignar diferentes a la misma pulsación de tecla según el tipo de archivo.
equalprg
opción en un ftplugin para usar un filtro externo para la =
sangría, en lugar de una combinación de teclas personalizada.
formatpgm
con ordenado y astyle y luego gq
. Estos son algunos ejemplos de mi .vimrc
: au FileType xml set fp=tidy\ -q\ -i\ -xml
yau FileType java set fp=/usr/local/bin/astyle\ --mode=java\ --indent=tab
Si desea reiniciar el bloque en el que se encuentra sin tener que escribir ningún acorde, puede hacer lo siguiente:
[[=]]
=aB
cual no moverá el cursor en absoluto.
[[=]]
requiere 5 acordes :(
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 todas las líneas debajo de la línea actual
=G
Para sangrar la línea actual
==
Para sangrar n
líneas debajo de la línea actual
n==
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
=%
Puede usar la aplicación / utilidad ordenada para sangrar archivos HTML y XML y funciona bastante bien para sangrar esos archivos.
Prettificar un archivo XML
:!tidy -mi -xml %
Prettificar un archivo HTML
:!tidy -mi -html %
presione escape y luego escriba las combinaciones siguientes rápidamente:
gg=G
1G=G
. Eso debería sangrar todas las líneas del archivo. 1G
te lleva a la primera línea, =
iniciará la sangría automática y la final G
te llevará a la última línea del archivo.
1gg=G
En Vim, usa :insert
. Esto mantendrá todo su formato y no hará autoindenting. Para obtener más información help :insert
.
vim-autoformat formatea sus archivos fuente usando programas externos específicos para su idioma, por ejemplo, la gema "rbeautify" para archivos Ruby, el paquete npm "js-beautify" para JavaScript.
Para archivos complejos de C ++, vim no siempre obtiene el formato correcto cuando se usa el =
comando de filtro de vim . Entonces, para tales situaciones, es mejor usar un formateador externo de C ++ como un estilo (o incrustación ), por ejemplo:
:%!astyle
La función '=' de Vim usa su formateador interno de manera predeterminada (que no siempre hace las cosas bien) pero también puede configurarlo para que use un formateador externo, como un estilo, configurándolo adecuadamente como se discutió en esta pregunta .
Para archivos XML, uso este comando
:1,$!xmllint --format --recover - 2>/dev/null
Necesita tener instalado xmllint (paquete libxml2-utils)
(Fuente: http://ku1ik.com/2011/09/08/formatting-xml-in-vim-with-indent-command.html )
Puede crear una asignación para hacer esto por usted.
Éste sangrará automáticamente todo el archivo y aún mantendrá el cursor en la posición en la que se encuentra:
nmap <leader>ai mzgg=G`z
Para vi Editor, use: insert. Esto mantendrá todo su formato y no insertará sangría automática. Una vez hecho, presione escape para ver el archivo formateado real; de lo contrario, verá algunos caracteres basura. como ^ I eg:
public static void main(String[] args) {
^I
^I System.out.println("Some Garbage printed upon using :insert");
}
Simplemente vaya al modo visual en vim, y seleccione de arriba a abajo líneas después de seleccionar simplemente presione =, Toda la línea seleccionada se sangrará.
ggvG=
cuando puedes gg=G
? ¿Cuál era el punto de hacer visible el movimiento? Eso se aplica a todas las acciones que toman movimientos.