VIM + JSLint?

120

Je passe mes journées dans vim, en train d'écrire beaucoup de JavaScript. J'ai essayé de trouver un moyen d'intégrer JSLint ou quelque chose de similaire dans vim pour améliorer mon codage. Quelqu'un a-t-il réussi à faire quelque chose comme ça?

Éditer:

essayé ceci: Vérification de la syntaxe Javascript De Vim , malheureusement, le résultat est très grossier.

ben lemasurier
la source

Réponses:

34

Vous pouvez suivre les instructions du service Web JSLint + intégration VIM ou faire ce que j'ai fait:

Téléchargez http://jslint.webvm.net/mylintrun.js et http://www.jslint.com/fulljslint.js et placez-les dans un répertoire de votre choix.

Ajoutez ensuite la ligne suivante au début de mylintrun.js:

var filename= arguments[0];

et remplacez la dernière ligne de code dans mylintrun.js ("print (...)") par:

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

Cela permet à mylintrun.js de sortir une liste d'erreurs qui peut être utilisée avec la fenêtre de correction rapide VIM (: copen).

Maintenant, définissez les éléments suivants dans VIM:

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

où vous devez changer / mon / chemin / en / js par le chemin de SpiderMonkey et /my/path/to/mylintrun.js par le chemin où vous avez placé les fichiers JS.

Maintenant, vous pouvez utiliser : make in VIM et utiliser la fenêtre quickfix (: he quickfix-window) pour passer d'erreur en erreur.

f3lix
la source
Pourquoi cattez-vous le tampon et le passez-vous comme argument à mylintrun?
jamessan
@jamessan: le script mylintrun.js lit le fichier depuis stdin. C'est donc à cela que sert l'élevage. Pour la sortie d'erreur, mylintrun.js a également besoin du nom de fichier, il est donc donné comme argument. Vous pouvez modifier le script pour ouvrir le fichier en lecture au lieu de le lire depuis stdin (rendant le chat inutile). Mais je ne voulais pas m'embêter avec ça ... et je crois qu'il y a un problème de lecture de fichiers si vous avez un moteur JavaScript compilé sans FileObject
f3lix
quel est `` le chemin vers SpiderMonkey '' sur votre machine - j'en ai quelques-uns sur le mien
Dr Frankenstein
Je ne peux pas accéder à mylintrun.js, y a-t-il un autre emplacement. il semble être mort
bluekeys
1
Les liens vers mylintrun.js et fulljslint.js sont rompus, ce qui rend cette réponse moins qu'utile car elle dépend beaucoup d'eux. Pouvez-vous mettre à jour avec des URL fonctionnelles? Sinon, je devrai supprimer cette réponse, ce qui est décevant car elle a l'air plutôt bien et a aidé beaucoup de gens. Merci.
Kev
187

La meilleure pratique pour l'OMI est:

  1. Installez le plugin Syntastic Vim - Le meilleur vérificateur de syntaxe pour de nombreuses langues, et il s'intègre à la fenêtre de liste d' emplacement de Vim (== quickfix ).
  2. Choisissez l'une des deux options ci-dessous:

JSLint

  1. Installer jsl(exécutable JSLint) en utilisant votre gestionnaire de paquets préféré (Ubuntu apt-get, Mac à la maisonbrew , etc.).

Jshint.com géré par la communauté (meilleur que JSLint)

  1. Installez node.js à l' aide de votre gestionnaire de packages préféré.
  2. Installez Node Package Manager : 'curl https://npmjs.org/install.sh | sh ' EDIT: npm FAIT PARTIE DE node.js MAINTENANT
  3. Installez jshint globalement: 'npm install jshint -g'
  4. Mettez votre fichier de configuration jshint dans votre répertoire $ HOME : '~ / .jshintrc'
  5. Remplacez le fichier de Syntasticsyntax_checkers/javascript.vim par celui-ci - EDIT: PLUS NECESSAIRE AVEC LA NOUVELLE VERSION SYNTASTIQUE.

Prendre plaisir! :)

Ory Band
la source
1
Je fais un essai en ce moment. J'ai essayé de cloner Syntastic et d'utiliser la commande "rake install", puis j'ai remplacé le fichier javascrip.vim par le vôtre. Je n'arrive toujours pas à comprendre comment l'utiliser,: SyntasticEnable ne fait rien pour autant que je puisse le voir. Je vais continuer à essayer cependant ..
Claes Mogren
2
Ok, j'ai remarqué que Syntastic nécessite ballon_eval, qui n'est pas pris en charge dans MacVim. Dommage ..
Claes Mogren
1
J'ai essayé de l'ajouter, j'espère qu'il (ou une version plus jolie de celui-ci) sera tiré github.com/scrooloose/syntastic/pull/47
Claes Mogren
9
Je viens de passer un long moment à essayer de comprendre pourquoi rien ne semble se passer ... si vous tirez le fichier .jshintrc d'Ory, sachez qu'il y a une virgule après "google" dans l'objet "predef" qui empêche le chargement de jshint et Syntastique pour échouer silencieusement.
ThePants
1
jsl pour Windows: javascriptlint.com/download.htm également, faites attention dans le fichier jsl.vim pour ce problème: vim.1045645.n5.nabble.com/…
Andrew
17

Une autre option est jslint.vim de Jesse Hallet. Il est disponible sur GitHub et fonctionne avec ou sans la fenêtre QuickFix de Vim. C'est un joli plugin!

Alex Kahn
la source
1
+1 pour cela. Fonctionne très bien. Facilement téléchargeable sur vim.org/scripts/script.php?script_id=2729 . Notez que sous Windows, vous devrez installer Ruby.
mm2001
3
Assurez-vous également de consulter JSHint, mentionné ci-dessous.
Alex Kahn
Le projet n'est plus en développement.
OrangeTux
6

J'ai été très content d'utiliser node-lint

sudo npm -g install jslint

Puis frappez ça quelque part dans votre .vim

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

Maintenant, un :makeexécutera jslint. Des erreurs apparaissent dans la fenêtre de correction rapide.

bluekeys
la source
3

Voici les instructions Mac OS mises à jour pour novembre 2012. Supposons que Homebrew soit installé pour obtenir Node.js et que vous ayez déjà installé Syntastic pour Vim (j'utilise https://github.com/carlhuda/janus qui fournit cela automatiquement):

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

Ajoutez ensuite '/ usr / local / share / npm / bin' à votre PATH (probablement dans ~ / .bashrc). Par exemple, ajoutez la ligne: export PATH="$PATH:/usr/local/share/npm/bin"

redémarrez votre terminal et vérifiez que

$ jshint

est exécutable depuis la ligne de commande. Syntastic découvrira automatiquement jsHint. Redémarrez MacVim et profitez-en!

Shaun Dychko
la source