VIM + JSLint?


120

Trascorro le mie giornate in vim, attualmente scrivendo molto JavaScript. Ho cercato di trovare un modo per integrare JSLint o qualcosa di simile in vim per migliorare la mia codifica. Qualcuno è riuscito a fare qualcosa del genere?

Modificare:

provato questo: Javascript Syntax Checking Da Vim , sfortunatamente l'output è molto grezzo.

Risposte:


34

Puoi seguire le istruzioni dal servizio web JSLint + integrazione VIM o fare quello che ho fatto io:

Scarica http://jslint.webvm.net/mylintrun.js e http://www.jslint.com/fulljslint.js e inseriscili in una directory a tua scelta.

Quindi aggiungi la seguente riga all'inizio di mylintrun.js:

var filename= arguments[0];

e cambia l'ultima riga di codice in mylintrun.js ("print (...)") in:

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

Questo rende in output mylintrun.js un elenco di errori che può essere utilizzato con la finestra VIM quickfix (: copen).

Ora imposta quanto segue in VIM:

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

dove devi cambiare / my / path / to / js nel percorso di SpiderMonkey e /my/path/to/mylintrun.js nel percorso in cui hai inserito i file JS.

Ora puoi usare : make in VIM e usare la finestra quickfix (: he quickfix-window) per passare da un errore all'altro.


Perché stai prendendo in giro il buffer e lo passi come argomento a mylintrun?
jamessan

@jamessan: lo script mylintrun.js legge il file da stdin. Quindi è a questo che serve il bestiame. Per l'output dell'errore mylintrun.js necessita anche del nome del file, quindi viene fornito come argomento. È possibile modificare lo script per aprire il file in lettura invece di leggere da stdin (rendendo inutile il gatto). Ma non volevo preoccuparmi di questo ... e credo che ci sia un problema di lettura dei file se hai un motore JavaScript compilato senza FileObject
f3lix

qual è "il percorso per SpiderMonkey" sulla tua macchina - Ne ho alcuni sulla mia
Dr. Frankenstein

Non riesco ad accedere a mylintrun.js, esiste una posizione alternativa. sembra essere morto
bluekeys

1
I collegamenti a mylintrun.js e fulljslint.js sono interrotti, il che rende questa risposta meno che utile perché si basa molto su di loro. Puoi aggiornare con URL funzionanti? Altrimenti dovrò eliminare questa risposta che è una delusione perché sembra abbastanza buona e ha aiutato molte persone. Grazie.
Kev

187

Il modo migliore in cui IMO è:

  1. Installa il plug -in Syntastic Vim : il miglior controllo della sintassi per molte lingue, inoltre si integra con la finestra dell'elenco delle posizioni di Vim (== quickfix ).
  2. Scegli una delle due opzioni seguenti:

JSLint

  1. Installa jsl(eseguibile JSLint) utilizzando il tuo gestore di pacchetti preferito (Ubuntu apt-get, casabrew del Mac , ecc.).

Jshint.com guidato dalla comunità (migliore di JSLint)

  1. Installa node.js usando il tuo gestore di pacchetti preferito.
  2. Installa Node Package Manager : 'curl https://npmjs.org/install.sh | sh ' EDIT: npm FA PARTE DI node.js ORA
  3. Installa jshint a livello globale: "npm install jshint -g"
  4. Metti il ​​tuo file di configurazione jshint nella tua directory $ HOME : '~ / .jshintrc'
  5. Sovrascrivi il file di Syntasticsyntax_checkers/javascript.vim con questo - EDIT: NON PIÙ NECESSARIO CON LA NUOVA VERSIONE SYNTASTIC.

Godere! :)


1
Ci sto provando adesso. Ho provato a clonare Syntastic e utilizzando il comando "rake install", quindi ho sostituito il file javascrip.vim con il tuo. Non riesco ancora a capire come usarlo: SyntasticEnable non fa nulla per quanto posso vedere. Continuerò a provare però ..
Claes Mogren

2
Ok, ho notato che Syntastic richiede ballon_eval, che non è supportato in MacVim. Peccato ..
Claes Mogren

1
Ho provato ad aggiungerlo, spero che (o una versione più carina di esso) venga rimosso github.com/scrooloose/syntastic/pull/47
Claes Mogren

9
Ho appena passato molto tempo a cercare di capire perché non sembrava accadere nulla ... se hai estratto .jshintrc di Ory, tieni presente che c'è una virgola finale dopo "google" nell'oggetto "predef" che causa il mancato caricamento di jshint e Syntastic per fallire silenziosamente.
ThePants

1
jsl per Windows: javascriptlint.com/download.htm anche, attenzione nel file jsl.vim per questo problema: vim.1045645.n5.nabble.com/…
Andrew


6

Sono stato molto contento di usare node-lint

sudo npm -g install jslint

Quindi colpiscilo da qualche parte nel tuo .vim

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

Ora :makeverrà eseguito jslint. Gli errori vengono visualizzati nella finestra di correzione rapida.


3

Ecco le istruzioni per Mac OS aggiornate per novembre 2012. Presuppone che tu abbia installato Homebrew per ottenere Node.js e che tu abbia già installato Syntastic per Vim (io uso https://github.com/carlhuda/janus che lo fornisce automaticamente):

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

Quindi aggiungi "/ usr / local / share / npm / bin" al tuo PATH (probabilmente in ~ / .bashrc). Ad esempio, aggiungi la riga: export PATH="$PATH:/usr/local/share/npm/bin"

riavvia il tuo terminale e controlla

$ jshint

è eseguibile dalla riga di comando. Syntastic scoprirà automaticamente jsHint. Riavvia MacVim e divertiti!


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.