Vim 设置
Vim 用户可以安装 vim-prettier(专门用于 Prettier),或者 Neoformat 或 ALE(这些是通用的 lint/格式化引擎,支持 Prettier)。
vim-prettier
请参阅 vim-prettier 的自述文件以获取安装和使用说明。
Neoformat
安装 Neoformat 的最佳方法是使用您最喜欢的 Vim 插件管理器,例如 vim-plug。
Plug 'sbdchd/neoformat'
为了让 Neoformat 使用项目本地版本的 Prettier(即使用 node_modules/.bin/prettier
而不是在 $PATH
中查找 prettier
),您必须设置 neoformat_try_node_exe
选项。
let g:neoformat_try_node_exe = 1
在受支持的文件中运行 :Neoformat
或 :Neoformat prettier
以运行 Prettier。
让 Neoformat 在保存时运行 Prettier
autocmd BufWritePre *.js Neoformat
您还可以通过为其他事件设置 autocmd
来使 Vim 更频繁地格式化您的代码。以下是一些有用的事件:
TextChanged
:在普通模式下对文本进行更改后。InsertLeave
:退出插入模式时。
例如,您可以像这样同时在上述两个事件和 BufWritePre
上进行格式化:
autocmd BufWritePre,TextChanged,InsertLeave *.js Neoformat
有关详细信息,请参阅 Vim 中的 :help autocmd-events
。
建议使用 配置文件,但您也可以在 .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 支持 *lint 工具* 和 *修复程序*。如果您未指定要运行的 *lint 工具*,**将运行所有支持语言的所有可用工具**,您可能会得到一个格式正确的文件,但包含一堆 lint 错误。要禁用此行为,您可以告诉 ALE 只运行您已明确配置的 lint 工具(更多信息请参阅 FAQ)。
let g:ale_linters_explicit = 1
然后,您可以在 JavaScript 或 CSS 文件中运行 :ALEFix
以运行 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。使用您最喜欢的插件管理器(例如 vim-plug)安装 coc.nvim。
Plug 'neoclide/coc.nvim', {'branch': 'release'}
并通过命令安装 coc-prettier。
CocInstall coc-prettier
在您的 init.vim
或 .vimrc
中设置 Prettier
命令。
command! -nargs=0 Prettier :call CocAction('runCommand', 'prettier.formatFile')
更新您的 coc-settings.json
,以指定希望在保存时格式化的语言。
{
"coc.preferences.formatOnSaveFiletypes": ["css", "markdown"]
}
coc-prettier 具有与 prettier-vscode 相同的配置,通过 :CocConfig
打开 coc-settings.json
以获得自动完成支持。
手动运行
如果您想要一个非常精简的方案,您可以创建自定义键绑定。在本例中,gp
(助记符:“get pretty”)用于在当前活动缓冲区中运行 prettier(带选项)。
nnoremap gp :silent %!prettier --stdin-filepath %<CR>
请注意,如果您的代码中存在语法错误,整个缓冲区将被错误消息替换。您需要按 u
才能恢复您的代码。
此方法的另一个缺点是不会保留光标位置。