Настройка 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: после внесения изменений в текст в режиме Normal -
InsertLeave: при выходе из режима Insert
Например, вы можете форматировать код по обоим событиям одновременно с помощью 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 запускать только те проверки, которые вы явно настроили (подробнее в FAQ):
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, чтобы получить поддержку автодополнения.
Выполнение вручную
Если вам нужно что-то действительно простое, вы можете создать пользовательскую комбинацию клавиш. В этом примере gp (мнемоническое обозначение: «получить красиво») используется для запуска prettier (с опциями) в активном буфере:
nnoremap gp :silent %!prettier --stdin-filepath %<CR>
Обратите внимание, что если в вашем коде есть синтаксическая ошибка, весь буфер будет заменен сообщением об ошибке. Вам нужно будет нажать u для возвращения вашего кода.
Еще один недостаток этого подхода заключается в том, что позиция курсора не сохраняется.
© James Long and contributors
https://prettier.io/docs/en/vim