跳至主内容区

Vim 环境配置

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

Vim 用户可选择安装专为 Prettier 设计的 vim-prettier,或支持 Prettier 的通用代码检查/格式化引擎 NeoformatALE

vim-prettier

安装和使用说明请参阅 vim-prettier 的 README 文档。

Neoformat

推荐通过 Vim 插件管理器(如 vim-plug)安装 Neoformat:

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。

如需在保存时自动运行 Prettier:

autocmd BufWritePre *.js Neoformat

还可通过设置其他事件的 autocmd 来增加代码格式化频率,以下是两个常用事件:

  • 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 环境,因其依赖两者提供的异步处理能力。

推荐通过 Vim 插件管理器(如 vim-plug)安装 ALE:

Plug 'dense-analysis/ale'

更多安装说明请参见 ALE 仓库

ALE 将优先使用项目本地安装的 Prettier,其次才会查找全局安装版本。

为使用的语言启用 Prettier 修复功能:

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

ALE 同时支持_linter_(代码检查器)和_fixer_(修复器)。若未指定运行哪些_linter_,所有支持语言的可用工具都将被执行,可能导致文件格式正确但出现大量检查错误。如需禁用此行为,可配置 ALE 仅运行显式指定的 linter(详见 FAQ):

let g:ale_linters_explicit = 1

在 JavaScript 或 CSS 文件中执行 :ALEFix 即可运行 Prettier。

如需在保存时自动运行 Prettier:

let g:ale_fix_on_save = 1

推荐使用配置文件,也可在 .vimrc 中添加选项:

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

coc-prettier

coc.nvim 的 Prettier 扩展,需要 neovim 或 vim8.1 支持。 使用你喜欢的插件管理器安装 coc.nvim,例如 vim-plug

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 恢复代码。

此方法的另一缺点是光标位置无法保留。