VIM + JSLint?


120

Ich verbringe meine Tage in vim und schreibe derzeit viel JavaScript. Ich habe versucht, einen Weg zu finden, um JSLint oder ähnliches in vim zu integrieren, um meine Codierung zu verbessern. Hat es jemand geschafft, so etwas zu tun?

Bearbeiten:

habe folgendes versucht: Javascript Syntax Checking From Vim , leider ist die Ausgabe sehr grob.

Antworten:


34

Sie können den Anweisungen der Integration von JSLint Web-Service + VIM folgen oder das tun, was ich getan habe:

Laden Sie http://jslint.webvm.net/mylintrun.js und http://www.jslint.com/fulljslint.js herunter und legen Sie sie in einem Verzeichnis Ihrer Wahl ab.

Fügen Sie dann die folgende Zeile am Anfang von mylintrun.js hinzu:

var filename= arguments[0];

und ändern Sie die letzte Codezeile in mylintrun.js ("print (...)") in:

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

Dadurch wird in mylintrun.js eine Fehlerliste ausgegeben, die mit dem VIM-Quickfix-Fenster (: copen) verwendet werden kann.

Stellen Sie nun in VIM Folgendes ein:

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

Hier müssen Sie / my / path / to / js in den Pfad zu SpiderMonkey und /my/path/to/mylintrun.js in den Pfad ändern, in dem Sie die JS-Dateien ablegen .

Jetzt können Sie : make in VIM verwenden und das Quickfix- Fenster (: das Quickfix-Fenster) verwenden, um von Fehler zu Fehler zu springen.


Warum catten Sie den Puffer und übergeben ihn als Argument an mylintrun?
Jamessan

@jamessan: Das Skript mylintrun.js liest die Datei von stdin. Dafür ist das Catting da. Für die Fehlerausgabe benötigt mylintrun.js auch den Dateinamen, daher wird dieser als Argument angegeben. Sie können das Skript so ändern, dass die Datei zum Lesen geöffnet wird, anstatt von stdin zu lesen (wodurch die Katze unnötig wird). Aber ich wollte mich nicht darum kümmern ... und ich glaube, es gibt ein Problem beim Lesen von Dateien, wenn Sie eine JavaScript-Engine ohne FileObject
f3lix

Was ist 'der Weg zu SpiderMonkey' auf Ihrem Computer - ich habe ein paar auf meinem
Dr. Frankenstein

Ich kann mylintrun.js nicht erreichen, gibt es einen alternativen Ort? es scheint tot zu sein
Bluekeys

1
Die Links zu mylintrun.js und fulljslint.js sind fehlerhaft, was diese Antwort weniger nützlich macht, da sie stark von ihnen abhängt. Können Sie bitte mit funktionierenden URLs aktualisieren? Andernfalls muss ich diese Antwort löschen, was ein Mist ist, weil sie ziemlich gut aussieht und vielen Leuten geholfen hat. Vielen Dank.
Kev

187

Die Best-Practice-Methode IMO ist:

  1. Install Syntastic Vim Plugin - Bester Syntax-Checker für viele Sprachen und Integration in das Fenster mit der Standortliste (== Quickfix ) von Vim .
  2. Wählen Sie eine der beiden folgenden Optionen:

JSLint

  1. Installieren jsl (JSLint ausführbar) mit Ihrem bevorzugten Paketmanager (Ubuntus apt-get, Macs Homebrew usw.).

Community-gesteuertes jshint.com (besser als JSLint)

  1. Installieren Sie node.js mit Ihrem bevorzugten Paketmanager.
  2. Installieren Sie Node Package Manager : 'curl https://npmjs.org/install.sh | sh ' EDIT: npm IST JETZT TEIL VON node.js
  3. Installieren Sie jshint global: 'npm installieren jshint -g'
  4. Legen Sie Ihre jshint- Konfigurationsdatei in Ihre $ HOME- Verzeichnis ein: '~ / .jshintrc'
  5. Überschreiben Sie die syntax_checkers/javascript.vimDatei von Syntastic mit dieser - BEARBEITEN: NICHT MEHR ERFORDERLICH MIT DER NEUESTEN SYNTASTISCHEN VERSION.

Genießen! :) :)


1
Ich probiere es gerade aus. Versucht, Syntastic zu klonen und den Befehl "rake install" zu verwenden, und ersetzt dann die Datei javascrip.vim durch Ihre. Ich kann immer noch nicht herausfinden, wie man es benutzt: SyntasticEnable macht, soweit ich sehen kann, nichts. Ich werde es trotzdem weiter versuchen ..
Claes Mogren

2
Ok, habe festgestellt, dass Syntastic ballon_eval benötigt, was in MacVim nicht unterstützt wird. Schade ..
Claes Mogren

1
Versucht, es hinzuzufügen, hoffe, dass es (oder eine schönere Version davon) gezogen wird github.com/scrooloose/syntastic/pull/47
Claes Mogren

9
Ich habe nur lange versucht herauszufinden, warum nichts passiert ist ... Wenn Sie Orys .jshintrc gezogen haben, beachten Sie, dass im "predef" -Objekt nach "google" ein nachkommendes Komma steht, das dazu führt, dass jshint nicht geladen werden kann und Syntastisch, um lautlos zu versagen.
ThePants

1
jsl für Windows: javascriptlint.com/download.htm Beachten Sie auch die Datei jsl.vim für dieses Problem: vim.1045645.n5.nabble.com/…
Andrew

17

Eine weitere Option ist jslint.vim von Jesse Hallet. Es ist auf GitHub verfügbar und funktioniert mit oder ohne Vims QuickFix-Fenster. Es ist ein schönes Plugin!


1
+1 dafür. Funktioniert super. Bequem von vim.org/scripts/script.php?script_id=2729 herunterladbar . Beachten Sie, dass Sie unter Windows Ruby installieren müssen.
mm2001

3
Schauen Sie sich auch JSHint an, das unten erwähnt wird.
Alex Kahn

Das Projekt befindet sich nicht mehr in der Entwicklung.
OrangeTux

6

Ich war sehr glücklich mit Node-Lint

sudo npm -g install jslint

Dann schlagen Sie das irgendwo in Ihrem .vim

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

Jetzt :makewird ein jslint ausgeführt. Im Quickfix-Fenster werden Fehler angezeigt.


3

Hier sind die Mac OS-Anweisungen, die für November 2012 aktualisiert wurden. Angenommen, Sie haben Homebrew installiert, um Node.js zu erhalten, und Sie haben Syntastic for Vim bereits installiert (ich verwende https://github.com/carlhuda/janus which stellt dies automatisch zur Verfügung):

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

Fügen Sie dann '/ usr / local / share / npm / bin' zu Ihrem PFAD hinzu (wahrscheinlich in ~ / .bashrc). Fügen Sie beispielsweise die folgende Zeile hinzu: export PATH="$PATH:/usr/local/share/npm/bin"

Starten Sie Ihr Terminal neu und überprüfen Sie dies

$ jshint

ist über die Befehlszeile ausführbar. Syntastic erkennt jsHint automatisch. Starten Sie MacVim neu und genießen Sie!


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.