Estoy usando vim para codificar, es decir, en javascript. Me encantaría poder sangrar automáticamente el código javascript. Mi principal caso de uso es poder saltar automáticamente de un código javascript de una sola línea a un código bastante impreso con sangría completa (tal como lo haría https://beautifier.io/ ).
A pesar de buscar ayuda en Google y SO, no pude encontrar ninguna pregunta relacionada con la sangría automática en el caso específico donde el código para sangrar es de una sola línea.
Ejemplo de archivo de entrada:
import { BASE_URL } from "@/constants/config"; import { request } from "@/utils/request"; export const FOOTER_ENDPOINTS = { links: `${ BASE_URL} api/footer/links/`, } ; class Footer { async fetchLinks() { const { data } = await request({ url: FOOTER_ENDPOINTS.links, }); return data; } } export const FooterService = new Footer();Estoy esperando el siguiente resultado:
import { BASE_URL } from "@/constants/config"; import { request } from "@/utils/request"; export const FOOTER_ENDPOINTS = { links: `${BASE_URL}api/footer/links/`, }; class Footer { async fetchLinks() { const { data } = await request({ url: FOOTER_ENDPOINTS.links, }); return data; } } export const FooterService = new Footer(); Hasta ahora, he probado sin éxito los comandos =G y gg=G , así como :Autoformat from vim-autoformat plugin y pangloss/vim-javascript plugin.
La mejor pista que tengo es usar maksimr/vim-jsbeautify pero el resultado no es tan "bonito impreso" como hubiera esperado. ¿Tal vez algunas propiedades de editorconfig que no conozco podrían ayudar a agregar saltos de línea y evitar que las importaciones se interrumpan cuando no son demasiado largas?
import { BASE_URL } from "@/constants/config"; import { request } from "@/utils/request"; export const FOOTER_ENDPOINTS = { links: `${BASE_URL}api/footer/links/`, }; class Footer { async fetchLinks() { const { data } = await request({ url: FOOTER_ENDPOINTS.links, }); return data; } } export const FooterService = new Footer();BONIFICACIÓN: Sería increíble si la solución también pudiera aplicar sangría automática a entidades similares a dictados, como javascript o json, por ejemplo.
Siendo el editor de texto generalista que es, existe un límite para lo que Vim puede hacer por sí solo con tipos de archivos específicos.
Fuera de la caja, Vim es incapaz de hacer lo que le pides, pero te permite usar herramientas externas que lo hacen.
Lo que necesitas averiguar es:
La aplicación web que menciona usa js-beautify , por lo que, si está satisfecho con la forma en que la aplicación web formatea su código, entonces debería probar js-beautify .
El primer problema, aquí, es que la aplicación web en realidad no formatea su muestra de la forma en que afirma que lo hace. Sale esto:
import { BASE_URL } from "@/constants/config"; import { request } from "@/utils/request"; export const FOOTER_ENDPOINTS = { links: `${ BASE_URL} api/footer/links/`, }; class Footer { async fetchLinks() { const { data } = await request({ url: FOOTER_ENDPOINTS.links, }); return data; } } export const FooterService = new Footer(); que resulta ser idéntico a lo que js-beautify local genera de forma predeterminada.
Si esa aplicación web realmente puede formatear su código de la manera que desea, entonces debe probar varias configuraciones hasta que esté satisfecho y luego pasar a la fase de configuración.
Pero hay un segundo problema: acabo de pasar unos minutos jugando con la configuración y me temo que tengo que señalar que esta declaración:
tal como lo haría https://beautifier.io/
es evidentemente falso. La aplicación web no puede hacer su formato ideal y es muy probable que el js-beautify subyacente esté limitado de manera similar.
Así que ha regresado al paso n.º 1: averiguar qué herramienta externa usar... que está fuera del alcance de este sitio.