node - ¿Cómo corrijo la indentación incorrecta de Javascript en línea en Vim?
vim jsx (8)
En caso de que alguien venga aquí, tenga en cuenta que el vim-javascript
de pangloss
en vim-javascript me ayudó hasta ahora, es decir, Vim 7.4. Y las soluciones anteriores de oligofren y Charles Roper no lo hicieron.
Parece que no puedo obtener sangrado Javascript en línea correctamente en Vim. Considera lo siguiente:
$(document).ready(function() {
// Closing brace correctly indented
$("input").focus(function() {
$(this).closest("li").addClass("cur-focus");
}); // <-- I had to manually unindent this
// Closing brace incorrectly indented
$("input").blur(function() {
$(this).closest("li").removeClass("cur-focus");
}); // <-- This is what it does by default. Argh!
});
Vim parece insistir en sangrar automáticamente el corsé de cierre que se muestra en el segundo caso allí. Hace lo mismo si vuelvo a sangrar todo el archivo. ¿Cómo hago para que sangre automáticamente utilizando el estilo de sangría JS más estándar visto en el primer caso?
La mayoría de estas respuestas son de 2009 y, francamente, están desactualizadas.
vim-javascript es mucho más reciente y está más actualizado que el script de Preston.
La instalación es un poco más complicada si aún no ha comenzado a usar Vundle , pero no parece sufrir los problemas de las alternativas.
La secuencia de comandos de sangría Javascript más completa y sin errores es la de Preston Koprivica . La llamada secuencia de comandos OOP que está en la respuesta propuesta tiene errores graves, y no sangra correctamente el código que tiene corchetes.
Los scripts mencionados anteriormente no dan formato a la sintaxis de cierre que a menudo se usa en jQuery correctamente:
$(function() {
// only one level of indentation, not two
});
Este script funciona mejor para mí: http://www.vim.org/scripts/script.php?script_id=2765
Suponiendo que el archivo de sintaxis tiene una buena sangría para el guión java, resalte visualmente el bloque y presione =. Esto funciona para Java, así que esperaría que hiciera algo medio decente para el script java. Los resultados probablemente también dependan de la configuración de tabstop, expandtab y quizás shiftwidth.
gq también es útil, formatea líneas en lugar de sangrarlas.
Tuve el mismo problema. Este es el mejor de todos los scripts de sangría de Javascript:
http://www.vim.org/scripts/script.php?script_id=1840
Requiere el complemento IndentAnything
http://www.vim.org/scripts/script.php?script_id=1839
Como una ventaja adicional, escribí este guion de sangrado que hará que los bloques Javascript sean bastante bonitos. Utiliza el indenter html predeterminado de forma predeterminada (y el de IndentAnything cuando está dentro de un bloque Javascript)
Use JavaScript Indent: Javascript indenter (se incluye guion HTML) por Preston Koprivica. Gracias por el heads-up de oligofren , denle un voto positivo.
tal vez una combinación de estas configuraciones debe estar en su archivo VIMRC.
syntax on
set syn=auto
set showmatch
filetype on
filetype plugin on
filetype indent on
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab