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.
fuente
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.
=, el comando de sangría puede tomar movimientos. Por lo tanto, ggpara obtener el inicio del archivo, =al guión, Gal 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 pastey luego una :set nopastevez 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 :%!perltidytodo 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.
equalprgopción en un ftplugin para usar un filtro externo para la =sangría, en lugar de una combinación de teclas personalizada.
formatpgmcon ordenado y astyle y luego gq. Estos son algunos ejemplos de mi .vimrc: au FileType xml set fp=tidy\ -q\ -i\ -xmlyau 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:
[[=]]
=aBcual 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 nlí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. 1Gte lleva a la primera línea, =iniciará la sangría automática y la final Gte llevará a la última línea del archivo.
1gg=G
:set pastees tu amiga yo uso masilla y termino copiando código entre ventanas. Antes de activar :set paste(y :set nopaste) copiar / pegar me dio ajustes por esa misma razón.
En Vim, usa :insert . Esto mantendrá todo su formato y no hará autoindenting. Para obtener más información help :insert.
si no desea usar :set paste, haga clic con el botón central set nopaste, también puede pegar el contenido del portapapeles:
"*p
"+p
De esa manera no tienes que salir del modo normal. si tiene que pegar +o *depende de cómo seleccionó el texto, vea :help quoteplus.
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.