Saltar al contenido principal

Configuración para Vim

Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Los usuarios de Vim pueden instalar vim-prettier (específico para Prettier), o alternativas como Neoformat o ALE, que son motores de linting/formateo generalizados con soporte para Prettier.

vim-prettier

Consulta el archivo README de vim-prettier para instrucciones de instalación y uso.

Neoformat

La mejor forma de instalar Neoformat es mediante tu gestor de plugins favorito para Vim, como vim-plug:

Plug 'sbdchd/neoformat'

Para que Neoformat utilice una versión local de Prettier en el proyecto (es decir, usar node_modules/.bin/prettier en lugar de buscar prettier en $PATH), debes configurar la opción neoformat_try_node_exe:

let g:neoformat_try_node_exe = 1

Ejecuta :Neoformat o :Neoformat prettier en un archivo compatible para aplicar Prettier.

Para que Neoformat ejecute Prettier al guardar:

autocmd BufWritePre *.js Neoformat

Puedes configurar Vim para formatear tu código con mayor frecuencia definiendo un autocmd para otros eventos. Algunos ejemplos útiles:

  • TextChanged: después de modificar texto en modo Normal

  • InsertLeave: al salir del modo Insertar

Por ejemplo, puedes formatear en ambos eventos junto con BufWritePre así:

autocmd BufWritePre,TextChanged,InsertLeave *.js Neoformat

Consulta :help autocmd-events en Vim para más detalles.

Se recomienda usar un archivo de configuración, pero también puedes agregar opciones en tu .vimrc:

autocmd FileType javascript setlocal formatprg=prettier\ --single-quote\ --trailing-comma\ es5
" Use formatprg when available
let g:neoformat_try_formatprg = 1

Cada espacio en las opciones de Prettier debe escaparse con \.

ALE

ALE requiere Vim 8 o Neovim, ya que aprovecha las capacidades asíncronas que ambas versiones ofrecen.

La mejor forma de instalar ALE es mediante tu gestor de plugins favorito para Vim, como vim-plug:

Plug 'dense-analysis/ale'

Puedes encontrar más instrucciones en el repositorio de ALE.

ALE priorizará usar Prettier instalado localmente antes que buscar una instalación global.

Habilita el fixer de Prettier para los lenguajes que utilices:

let g:ale_fixers = {
\ 'javascript': ['prettier'],
\ 'css': ['prettier'],
\}

ALE soporta tanto linters como fixers. Si no especificas qué linters ejecutar, se ejecutarán todas las herramientas disponibles para todos los lenguajes soportados, lo que podría generar un archivo correctamente formateado con múltiples errores de linting. Para desactivar este comportamiento, configura ALE para ejecutar solo los linters que hayas configurado explícitamente (más información en las FAQ):

let g:ale_linters_explicit = 1

Luego puedes ejecutar :ALEFix en archivos JavaScript o CSS para aplicar Prettier.

Para que ALE ejecute Prettier al guardar:

let g:ale_fix_on_save = 1

Se recomienda usar un archivo de configuración, pero también puedes agregar opciones en tu .vimrc:

let g:ale_javascript_prettier_options = '--single-quote --trailing-comma all'

coc-prettier

Extensión de Prettier para coc.nvim que requiere neovim o vim8.1. Instala coc.nvim con tu gestor de plugins favorito, como vim-plug:

Plug 'neoclide/coc.nvim', {'branch': 'release'}

Y instala coc-prettier mediante el comando:

CocInstall coc-prettier

Configura el comando Prettier en tu init.vim o .vimrc:

command! -nargs=0 Prettier :call CocAction('runCommand', 'prettier.formatFile')

Actualiza tu coc-settings.json para los lenguajes que quieras formatear al guardar:

{
"coc.preferences.formatOnSaveFiletypes": ["css", "markdown"]
}

coc-prettier tiene las mismas configuraciones que prettier-vscode. Abre coc-settings.json con :CocConfig para obtener soporte de autocompletado.

Ejecución manual

Si prefieres una solución mínima, puedes crear un atajo de teclado personalizado. En este ejemplo, gp (nemónico: "get pretty") ejecuta Prettier (con opciones) en el búfer activo:

nnoremap gp :silent %!prettier --stdin-filepath %<CR>

Nota: si hay errores de sintaxis en tu código, todo el búfer será reemplazado por un mensaje de error. Deberás presionar u para recuperar tu código.

Otra desventaja de este método es que no se conservará la posición del cursor.