vim-prettier

A Vim plugin for Prettier

Github stars Tracking Chart

vim-prettier Travis CI Build Status Discord

A vim plugin wrapper for prettier, pre-configured with custom default prettier
settings.


NOTE: If you want to fallback to older version of prettier/vim-prettier please add this to your .vimrc:

Plug 'prettier/vim-prettier', {
  \ 'do': 'yarn install',
  \ 'branch': 'release/0.x'
  \ }

By default it will auto format javascript, typescript, less,
scss, css, json, graphql and markdown files if they
have/support the "@format" pragma annotation in the header of the file.

vim-prettier

INSTALL

Install with vim-plug, assumes node and
yarn, npm installed globally.

" post install (yarn install, npm install) then load plugin only for editing supported files
Plug 'prettier/vim-prettier', {
  \ 'do': 'yarn install',
  \ 'for': ['javascript', 'typescript', 'css', 'less', 'scss', 'json', 'graphql', 'markdown', 'vue', 'yaml', 'html'] }

or simply enable for all formats by:

" post install (yarn install, npm install) then load plugin only for editing supported files
Plug 'prettier/vim-prettier', { 'do': 'yarn install' }

For those using vim-pathogen, you can run the following in a terminal:

cd ~/.vim/bundle
git clone https://github.com/prettier/vim-prettier

If using other vim plugin managers or doing manual setup make sure to have
prettier installed globally or go to your vim-prettier directory and either do
npm install or yarn install

Prettier Executable resolution

When installed via vim-plug, a default prettier executable is installed inside
vim-prettier.

vim-prettier executable resolution:

  1. Look for user defined prettier cli path from vim configuration file
  2. Traverse parents and search for Prettier installation inside node_modules
  3. Look for a global prettier installation
  4. Use locally installed vim-prettier prettier executable

USAGE

Prettier by default will run on auto save but can also be manually triggered by:

<Leader>p

or

:Prettier

If your are on vim 8+ you can also trigger async formatting by:

:PrettierAsync

You can send to prettier your entire buffer but ensure that it formats only your selection.

**note: ** differs from :PrettierFragment by sending the entire buffer to prettier, allowing identation level to be preserved, but it requires the whole file to be valid.

:PrettierPartial

You can send to prettier your current selection as a fragment of same type as the file being edited.

**note: ** differs from :PrettierFragment by sending only the current selection to prettier, this allows for faster formatting but wont preserve indentation.

:PrettierFragment

You can check what is the vim-prettier plugin version by:

:PrettierVersion

You can send commands to the resolved prettier cli by:

:PrettierCli <q-args>

You can check what is the resolved prettier cli path by:

:PrettierCliPath

You can check what is the resolved prettier cli version by:

:PrettierCliVersion

Configuration

Change the mapping to run from the default of <Leader>p

nmap <Leader>py <Plug>(Prettier)

Enable auto formatting of files that have "@format" or "@prettier" tag

let g:prettier#autoformat = 1

Allow auto formatting for files without "@format" or "@prettier" tag

let g:prettier#autoformat_require_pragma = 0

Toggle the g:prettier#autoformat setting based on whether a config file can be found in the current directory or any parent directory. Note that this will override the g:prettier#autoformat setting!

let g:prettier#autoformat_config_present = 1

A list containing all config file names to search for when using the g:prettier#autoformat_config_present option.

let g:prettier#autoformat_config_files = [...]

Set the prettier CLI executable path

let g:prettier#exec_cmd_path = "~/path/to/cli/prettier"

The command :Prettier by default is synchronous but can also be forced async

let g:prettier#exec_cmd_async = 1

By default parsing errors will open the quickfix but can also be disabled

let g:prettier#quickfix_enabled = 0

By default selection formatting will be running :PrettierFragment but we can set
:PrettierPartial as the default selection formatting by:

let g:prettier#partial_format=1

By default we auto focus on the quickfix when there are errors but can also be disabled

let g:prettier#quickfix_auto_focus = 0

To running vim-prettier not only before saving, but also after changing text or leaving insert mode:

" when running at every change you may want to disable quickfix
let g:prettier#quickfix_enabled = 0

autocmd TextChanged,InsertLeave *.js,*.jsx,*.mjs,*.ts,*.tsx,*.css,*.less,*.scss,*.json,*.graphql,*.md,*.vue,*.yaml,*.html PrettierAsync

Overwrite default prettier configuration

Note: vim-prettier default settings differ from prettier intentionally.
However they can be configured by:

" Max line length that prettier will wrap on: a number or 'auto' (use
" textwidth).
" default: 'auto'
let g:prettier#config#print_width = 'auto'

" number of spaces per indentation level: a number or 'auto' (use
" softtabstop)
" default: 'auto'
let g:prettier#config#tab_width = 'auto'

" use tabs instead of spaces: true, false, or auto (use the expandtab setting).
" default: 'auto'
let g:prettier#config#use_tabs = 'auto'

" flow, babylon, typescript, css, less, scss, json, graphql, markdown or empty string
" (let prettier choose).
" default: ''
let g:prettier#config#parser = ''

" cli-override, file-override, prefer-file
" default: 'file-override'
let g:prettier#config#config_precedence = 'file-override'

" always, never, preserve
" default: 'preserve'
let g:prettier#config#prose_wrap = 'preserve'

" css, strict, ignore
" default: 'css'
let g:prettier#config#html_whitespace_sensitivity = 'css'

" false, true
" default: 'false'
let g:prettier#config#require_pragma = 'false'

REQUIREMENT(S)

If the prettier executable can't be found by Vim, no code formatting will happen

Main metrics

Overview
Name With Ownerprettier/vim-prettier
Primary LanguageVim Script
Program languageDockerfile (Language Count: 4)
Platform
License:MIT License
所有者活动
Created At2017-05-24 22:39:57
Pushed At2024-06-11 15:49:17
Last Commit At2023-10-10 12:55:24
Release Count30
Last Release Name1.0.0 (Posted on 2023-10-10 12:30:00)
First Release Name0.0.1 (Posted on )
用户参与
Stargazers Count1.8k
Watchers Count12
Fork Count141
Commits Count533
Has Issues Enabled
Issues Count199
Issue Open Count46
Pull Requests Count129
Pull Requests Open Count17
Pull Requests Close Count13
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private