Vim 設定
Vim 使用者可以安裝 Prettier 專用的 vim-prettier,或是支援 Prettier 的通用 lint/格式化引擎 Neoformat 或 ALE。
vim-prettier
安裝和使用說明,請參閱 vim-prettier 的 readme 文件。
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 同時支援「linter」和「fixer」。如果您沒有指定要執行的 *linter*,**所有支援語言的所有可用工具都將被執行,**您可能會得到一個格式正確但帶有一堆 lint 錯誤的檔案。要停用此行為,您可以告訴 ALE 只執行您明確設定的 linter(更多資訊請參考 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
適用於 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
才能恢復您的程式碼。
這種方法的另一個缺點是游標位置將不會被保留。