VIM + JSLint?

120

Passo meus dias no vim, atualmente escrevendo muito JavaScript. Eu tenho tentado encontrar uma maneira de integrar JSLint ou algo semelhante no vim para melhorar minha codificação. Alguém conseguiu fazer algo assim?

Editar:

tentei isso: Verificação de sintaxe Javascript No Vim , infelizmente a saída é muito grosseira.

ben lemasurier
fonte

Respostas:

34

Você pode seguir as instruções do serviço da Web JSLint + integração com o VIM ou fazer o que eu fiz:

Faça o download de http://jslint.webvm.net/mylintrun.js e http://www.jslint.com/fulljslint.js e coloque-os em um diretório de sua escolha.

Em seguida, adicione a seguinte linha ao início do mylintrun.js:

var filename= arguments[0];

e altere a última linha do código em mylintrun.js ("print (...)") para:

 print ( filename + ":" + (obj["line"] + 1) + ":" + (obj["character"] + 1) + ":" + obj["reason"] );

Isso cria no mylintrun.js uma lista de erros que pode ser usada com a janela do quickfix do VIM (: copen).

Agora defina o seguinte no VIM:

set makeprg=cat\ %\ \\\|\ /my/path/to/js\ /my/path/to/mylintrun.js\ %
set errorformat=%f:%l:%c:%m

onde você deve alterar / my / path / to / js no caminho para SpiderMonkey e /my/path/to/mylintrun.js no caminho em que você coloca os arquivos JS.

Agora, você pode usar : make no VIM e usar a janela do quickfix (: he quickfix-window) para pular de erro em erro.

f3lix
fonte
Por que você está catting o buffer e transmiti-lo como um argumento para mylintrun?
21810 jamessan
@jamessan: o script mylintrun.js lê o arquivo a partir de stdin. Então é para isso que serve o gato. Para a saída do erro, o mylintrun.js também precisa do nome do arquivo, portanto, ele é fornecido como argumento. Você pode modificar o script para abrir o arquivo para leitura em vez de ler a partir de stdin (tornando o gato desnecessário). Mas eu não queria incomodar com isso ... e eu acredito que há um problema ao ler arquivos se você tiver um motor de JavaScript compilado w / o do FileObject
f3lix
qual é o 'caminho para o SpiderMonkey' na sua máquina - eu tenho alguns na minha
Dr. Frankenstein
Não consigo acessar o mylintrun.js, existe um local alternativo. parece estar morto
bluekeys 20/03
1
Os links para mylintrun.js e fulljslint.js estão quebrados, o que está tornando esta resposta menos que útil, porque depende muito deles. Você pode atualizar com os URLs de trabalho? Caso contrário, precisarei excluir esta resposta, que é uma chatice, porque ela parece muito boa e ajudou muitas pessoas. Obrigado.
Kev
187

A melhor prática da IMO é:

  1. Instale o plug - in Syntastic Vim - o melhor verificador de sintaxe disponível para vários idiomas, além de se integrar à janela de lista de localização do Vim (== quickfix ).
  2. Escolha uma das duas opções abaixo:

JSLint

  1. Instale jsl(executável JSLint) usando seu gerenciador de pacotes favorito (Ubuntu apt-get, casabrew de Mac , etc.).

Jshint.com orientado pela comunidade (melhor que o JSLint)

  1. Instale o node.js usando seu gerenciador de pacotes favorito.
  2. Instale o Gerenciador de Pacotes do Nó : 'curl https://npmjs.org/install.sh | sh ' EDIT: npm É PARTE DO node.js AGORA
  3. Instale o jshint globalmente: 'npm install jshint -g'
  4. Coloque seu arquivo de configuração jshint no diretório $ HOME : '~ / .jshintrc'
  5. Substitua o arquivo do Syntasticsyntax_checkers/javascript.vim por este - EDIT: NÃO É NECESSÁRIO COM A MAIS NOVA VERSÃO SINTÁTICA.

Aproveitar! :)

Ory Band
fonte
1
Estou tentando agora. Tentei clonar o Syntastic e usar o comando "rake install" e, em seguida, substituiu o arquivo javascrip.vim pelo seu. Ainda não consigo descobrir como usá-lo: SyntasticEnable não faz nada tanto quanto eu posso ver. Continuarei tentando ..
Claes Mogren
2
Ok, notei que o Syntastic requer ballon_eval, que não é suportado no MacVim. Muito ruim ..
Claes Mogren
1
Acrescentando tentou fazê-lo, espero que ele (ou uma versão mais bonita dele) é puxado github.com/scrooloose/syntastic/pull/47
Claes Mogren
9
Passei muito tempo tentando descobrir por que nada parecia estar acontecendo ... se você puxasse o .jshintrc de Ory, esteja ciente de que há uma vírgula após "google" no objeto "predef" que faz com que o jshint falhe ao carregar e Sintático a falhar silenciosamente.
precisa saber é o seguinte
1
jsl para Windows: javascriptlint.com/download.htm também, assista ao arquivo jsl.vim desta edição: vim.1045645.n5.nabble.com/…
Andrew
17

Outra opção é o jslint.vim de Jesse Hallet. Está disponível no GitHub e funciona com ou sem a janela QuickFix do Vim. É um bom plugin!

Alex Kahn
fonte
1
+1 para isso. Funciona bem. Convenientemente disponível para download em vim.org/scripts/script.php?script_id=2729 . Observe que no Windows você precisará instalar o Ruby.
mm2001
3
Também não deixe de conferir o JSHint, mencionado abaixo.
Alex Kahn
O projeto não está mais em desenvolvimento.
precisa
6

Fiquei muito feliz usando o node-lint

sudo npm -g install jslint

Então golpeie isso em algum lugar do seu .vim

set makeprg=jslint\ %
set errorformat=%-P%f,
        \%E%>\ #%n\ %m,%Z%.%#Line\ %l\\,\ Pos\ %c,
        \%-G%f\ is\ OK.,%-Q

Agora, um :makeexecutará o jslint. Os erros aparecem na janela do quickfix.

bluekeys
fonte
3

Aqui estão as instruções do Mac OS atualizadas para novembro de 2012. Supõe que você tenha o Homebrew instalado para obter o Node.js e que já instalou o Syntastic for Vim (eu uso https://github.com/carlhuda/janus, que fornece isso automaticamente):

$ brew install node.js
$ npm install -g jshint

Em seguida, adicione '/ usr / local / share / npm / bin' ao seu PATH (provavelmente em ~ / .bashrc). Por exemplo, adicione a linha: export PATH="$PATH:/usr/local/share/npm/bin"

reinicie o seu terminal e verifique se

$ jshint

é executável na linha de comando. O Syntastic descobrirá o jsHint automaticamente. Reinicie o MacVim e divirta-se!

Shaun Dychko
fonte