Comecei a usar o plug- in sintático com o vim para relatar erros de cotão no meu javascript
código.
Também integrei o eslint com o sintático , e ele me mostra bons erros, avisos caso estejam presentes de acordo com as regras escritas no meu arquivo .eslintrc .
Existe alguma maneira de corrigir alguns erros comuns, por exemplo, falta de ponto-e-vírgula, falta de espaço etc. com um toque de tecla?
Editar:
Eu descobri que o eslint tem uma opção
--fix Automatically fix problems
que pode ser usado para esses casos. Preciso executar este comando para permitir que o eslint corrija esses problemas
eslint --fix -c myconfig file.js
Quero saber como isso pode ser integrado ao vim ?
quickfix
filetype-javascript
plugin-syntastic
WitVault
fonte
fonte
map <C-j> call Function()<CR>
Mas essa seria uma função personalizada que você precisaria escrever para atender às suas necessidades. E o argumento de romainl é que, se você fizer algo errado, poderá acabar causando mais mal do que bem. É aconselhável ter cuidadoeslint --fix
, eu prefiro ter isso no nível do editor.Respostas:
Conforme mencionado nos comentários, esteja ciente das conseqüências que essa modificação tem no ambiente de trabalho (saiba exatamente quais regras de restrição você usa para "consertar" as coisas).
Para responder à sua pergunta: adicionar a opção à execução do eslint com o sintático é direto . Basta adicionar isso ao seu
.vimrc
:Mas como o eslint é executado no arquivo depois que o vim grava seu buffer no arquivo, o vim não sabe sobre as correções que o eslint faz. Então, de alguma forma, o vim precisa carregar o arquivo novamente (a maneira manual seria simplesmente digitar
:e
no modo normal / comando). Para fazer isso, podemos usar a opção autoread junto com o horário da verificação :Para chamar a hora da verificação, podemos usar um autocmd que é executado toda vez que um buffer é gravado em um arquivo. Mas, como o sintático está usando seu próprio autocmd no mesmo evento
BufWritePost
, temos que adicionar nosso autocmd depois que o sintático adicionar o seu. Eu descobri que esse é o caso quando adicionamos nosso autocmd emVimEnter
:Portanto, após adicionar as três partes ao seu
.vimrc
vim, ele deve se comportar conforme o esperado (fiapos e correção automática ao salvar o arquivo:w
).fonte
A solução dada na resposta de Jepz não funcionou completamente para mim.
eslint
foi chamado corretamente com a--fix
opção No entanto, talvez seja por causa de alterações internas, mas parece que elechecktime
foi chamado antes do final deeslint --fix
, para que o recarregamento do arquivo não funcionasse corretamente, acionando umfile has changed, are you sure you want to write to it?
salvamento no próximo.No entanto, ao investigar problemas, descobri um gancho oculto que parece disparar após a conclusão das verificações do Syntastic, denominada
SyntasticCheckHook
( origem ).Com isso, você pode simplesmente ligar
checktime
depois que as verificações do Syntastic forem executadas.Aqui está o meu código final:
Edit: Eu mudei pessoalmente para o
ALE
linting, que suporta autofixing nativamente.fonte