Настройка Vim
Пользователи Vim могут установить vim-prettier, который предназначен специально для Prettier, или Neoformat либо ALE — универсальные движки для линтинга и форматирования с поддержкой Prettier.
vim-prettier
Инструкции по установке и использованию см. в файле README проекта vim-prettier.
Neoformat
Лучший способ установить Neoformat — воспользоваться предпочитаемым менеджером плагинов для Vim, например vim-plug:
Plug 'sbdchd/neoformat'
Чтобы Neoformat использовал локальную версию Prettier из проекта (то есть использовал node_modules/.bin/prettier вместо поиска prettier в $PATH), необходимо задать параметр neoformat_try_node_exe:
let g:neoformat_try_node_exe = 1
Выполните :Neoformat или :Neoformat prettier в поддерживаемом файле, чтобы запустить Prettier.
Чтобы Neoformat запускал Prettier при сохранении:
autocmd BufWritePre *.js Neoformat
Можно настроить Vim на более частое форматирование кода, задав autocmd для других событий. Вот несколько полезных вариантов:
-
TextChanged: после изменения текста в обычном режиме -
InsertLeave: при выходе из режима вставки
Например, можно форматировать код при обоих перечисленных событиях с помощью BufWritePre следующим образом:
autocmd BufWritePre,TextChanged,InsertLeave *.js Neoformat
Подробности см. в :help autocmd-events Vim.
Рекомендуется использовать файл конфигурации, но можно также добавить параметры в .vimrc:
autocmd FileType javascript setlocal formatprg=prettier\ --single-quote\ --trailing-comma\ es5 " Use formatprg when available let g:neoformat_try_formatprg = 1
Каждый пробел в параметрах Prettier следует экранировать с помощью \.
ALE
Для работы ALE требуется Vim 8 или Neovim, поскольку ALE использует возможности асинхронной работы, предоставляемые Vim 8 и Neovim.
Лучший способ установить ALE — воспользоваться предпочитаемым менеджером плагинов для Vim, например vim-plug:
Plug 'dense-analysis/ale'
Дополнительные инструкции можно найти в репозитории ALE.
ALE сначала попытается использовать локально установленный Prettier, а затем будет искать глобальную установку.
Включите исправление Prettier для используемых вами языков:
let g:ale_fixers = {
\ 'javascript': ['prettier'],
\ 'css': ['prettier'],
\} ALE поддерживает как линтеры, так и средства исправления. Если не указать, какие линтеры запускать, будут запущены все доступные инструменты для всех поддерживаемых языков, и вы можете получить правильно отформатированный файл с множеством ошибок линтинга. Чтобы отключить такое поведение, настройте ALE на запуск только явно указанных вами линтеров (подробнее см. в разделе часто задаваемых вопросов):
let g:ale_linters_explicit = 1
После этого можно выполнить :ALEFix в файле JavaScript или CSS, чтобы запустить Prettier.
Чтобы ALE запускал Prettier при сохранении:
let g:ale_fix_on_save = 1
Рекомендуется использовать файл конфигурации, но можно также добавить параметры в .vimrc:
let g:ale_javascript_prettier_options = '--single-quote --trailing-comma all'
coc-prettier
Расширение Prettier для coc.nvim, для работы которого требуется neovim или vim8.1. Установите coc.nvim с помощью предпочитаемого менеджера плагинов, например vim-plug:
Plug 'neoclide/coc.nvim', {'branch': 'release'} Затем установите coc-prettier командой:
CocInstall coc-prettier
Настройте команду Prettier в init.vim или .vimrc
command! -nargs=0 Prettier :call CocAction('runCommand', 'prettier.formatFile') Обновите coc-settings.json для языков, которые нужно форматировать при сохранении.
{
"coc.preferences.formatOnSaveFiletypes": ["css", "markdown"]
} У coc-prettier те же параметры конфигурации, что и у prettier-vscode. Откройте coc-settings.json с помощью :CocConfig, чтобы включить автодополнение.
Запуск вручную
Если вам нужен максимально простой вариант, можно создать собственную комбинацию клавиш. В этом примере для запуска prettier (с параметрами) в активном буфере используется gp (мнемоническое правило: «сделать красивым»):
nnoremap gp :silent %!prettier --stdin-filepath %<CR>
Обратите внимание: если в коде есть синтаксическая ошибка, весь буфер будет заменён сообщением об ошибке. Чтобы восстановить код, нажмите u.
Ещё один недостаток этого подхода — положение курсора не сохраняется.
© James Long and contributors
https://prettier.io/docs/vim