Spec-Zone.ru › Prettier

Настройка 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API