Hoppa till huvudinnehållet

Vim-installation

Inofficiell Beta-översättning

Denna sida har översatts av PageTurner AI (beta). Inte officiellt godkänd av projektet. Hittade du ett fel? Rapportera problem →

Vim-användare kan installera antingen vim-prettier (specifikt för Prettier) eller de mer generella lint/formateringsverktygen Neoformat eller ALE som stöder Prettier.

vim-prettier

Se vim-prettiers readme för installations- och användningsinstruktioner.

Neoformat

Bästa sättet att installera Neoformat är via din favorit-pluginhanterare för Vim, som vim-plug:

Plug 'sbdchd/neoformat'

För att Neoformat ska använda en projektspecifik version av Prettier (dvs. använda node_modules/.bin/prettier istället för att leta efter prettier i $PATH), måste du ange alternativet neoformat_try_node_exe:

let g:neoformat_try_node_exe = 1

Kör :Neoformat eller :Neoformat prettier i en fil som stöds för att köra Prettier.

För att Neoformat automatiskt ska köra Prettier vid sparande:

autocmd BufWritePre *.js Neoformat

Du kan också få Vim att formatera din kod oftare genom att skapa en autocmd för andra händelser. Här är några användbara exempel:

  • TextChanged: efter textändring i normalläge

  • InsertLeave: när du lämnar insticksläge

Du kan till exempel formatera vid båda dessa händelser plus BufWritePre så här:

autocmd BufWritePre,TextChanged,InsertLeave *.js Neoformat

Se :help autocmd-events i Vim för detaljer.

Vi rekommenderar att använda en konfigurationsfil, men du kan också lägga till alternativ i din .vimrc:

autocmd FileType javascript setlocal formatprg=prettier\ --single-quote\ --trailing-comma\ es5
" Use formatprg when available
let g:neoformat_try_formatprg = 1

Varje mellanslag i Prettier-alternativ måste escaped med \.

ALE

ALE kräver antingen Vim 8 eller Neovim eftersom verktyget använder asynkrona funktioner i dessa versioner.

Bästa sättet att installera ALE är via din favorit-pluginhanterare för Vim, som vim-plug:

Plug 'dense-analysis/ale'

Ytterligare instruktioner finns i ALE-repositoriet.

ALE försöker först använda lokalt installerad Prettier innan den söker globalt.

Aktivera Prettier-fixern för dina språk:

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

ALE stöder både linters och fixers. Om du inte anger specifika linters kommer alla tillgängliga verktyg för alla språk att köras, vilket kan ge en korrekt formaterad fil full av lint-fel. Stäng av detta genom att tvinga ALE att endast köra explicit konfigurerade linters (mer info i FAQ):

let g:ale_linters_explicit = 1

Kör sedan :ALEFix i en JavaScript- eller CSS-fil för att köra Prettier.

För att ALE automatiskt ska köra Prettier vid sparande:

let g:ale_fix_on_save = 1

Vi rekommenderar att använda en konfigurationsfil, men du kan också lägga till alternativ i din .vimrc:

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

coc-prettier

Prettier-tillägg för coc.nvim som kräver neovim eller vim8.1. Installera coc.nvim med din favorit-pluginhanterare, till exempel vim-plug:

Plug 'neoclide/coc.nvim', {'branch': 'release'}

Och installera coc-prettier med kommandot:

CocInstall coc-prettier

Konfigurera Prettier-kommandot i din init.vim eller .vimrc

command! -nargs=0 Prettier :call CocAction('runCommand', 'prettier.formatFile')

Uppdatera din coc-settings.json för språk där du vill formatera vid sparning.

{
"coc.preferences.formatOnSaveFiletypes": ["css", "markdown"]
}

coc-prettier har samma inställningar som prettier-vscode, öppna coc-settings.json med :CocConfig för att få autocompleteringsstöd.

Manuell körning

Om du vill ha en minimalistisk lösning kan du skapa en anpassad tangentbordsbrytare. I detta exempel används gp (minnesregel: "get pretty") för att köra prettier (med flaggor) i den aktuella bufferten:

nnoremap gp :silent %!prettier --stdin-filepath %<CR>

Observera att om det finns ett syntaxfel i din kod kommer hela bufferten att ersättas med ett felmeddelande. Du måste trycka u för att återställa din kod.

En annan nackdel med detta tillvägagångssätt är att markörpositionen inte kommer att bevaras.