VIM + JSLint?

121

Dni spędzam w vimie, obecnie pisząc dużo JavaScript. Próbowałem znaleźć sposób na zintegrowanie JSLint lub czegoś podobnego z vimem, aby poprawić moje kodowanie. Czy komuś udało się coś takiego zrobić?

Edytować:

próbowałem tego: Sprawdzanie składni Javascript z Vima , niestety wynik jest bardzo prymitywny.

ben lemasurier
źródło

Odpowiedzi:

34

Możesz postępować zgodnie z instrukcjami z usługi internetowej JSLint + integracji VIM lub zrobić to, co zrobiłem:

Pobierz http://jslint.webvm.net/mylintrun.js i http://www.jslint.com/fulljslint.js i umieść je w wybranym katalogu.

Następnie dodaj następujący wiersz na początku pliku mylintrun.js:

var filename= arguments[0];

i zmień ostatnią linię kodu w mylintrun.js ("print (...)") na:

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

To sprawia, że ​​plik mylintrun.js wyświetla listę błędów, której można użyć z oknem szybkiej poprawki VIM (: copen).

Teraz ustaw w VIM:

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

gdzie musisz zmienić / my / path / to / js na ścieżkę do SpiderMonkey i /my/path/to/mylintrun.js na ścieżkę, w której umieszczasz pliki JS.

Teraz możesz użyć : make w VIM i użyć okna quickfix (: he quickfix-window), aby przeskoczyć od błędu do błędu.

f3lix
źródło
Dlaczego przechwytujesz bufor i przekazujesz go jako argument do mylintrun?
jamessan
@jamessan: skrypt mylintrun.js odczytuje plik ze standardowego wejścia. Więc po to jest kotowanie. Do wyjścia błędu mylintrun.js potrzebuje również nazwy pliku, więc jest ona podawana jako argument. Możesz zmodyfikować skrypt, aby otworzyć plik do odczytu zamiast czytania ze standardowego wejścia (sprawiając, że cat jest niepotrzebny). Ale nie chciałem się tym przejmować ... i uważam, że jest problem z odczytem plików, jeśli masz silnik JavaScript skompilowany bez FileObject
f3lix
jaka jest `` ścieżka do SpiderMonkey '' na twoim komputerze - mam kilka na moim
Dr Frankenstein
Nie mogę wejść na mylintrun.js, czy jest inna lokalizacja. wydaje się martwy
bluekeys
1
Linki do mylintrun.js i fulljslint.js są zepsute, co sprawia, że ​​ta odpowiedź jest mniej niż użyteczna, ponieważ w dużym stopniu od nich zależy. Czy możesz zaktualizować działające adresy URL? W przeciwnym razie będę musiał usunąć tę odpowiedź, co jest bum, ponieważ wygląda całkiem nieźle i pomogło wielu ludziom. Dzięki.
Kev,
187

Najlepsza praktyka IMO to:

  1. Zainstaluj wtyczkę Syntastic Vim - Najlepszy program do sprawdzania składni dla wielu języków, a ponadto integruje się z oknem listy lokalizacji Vima (== quickfix ).
  2. Wybierz jedną z dwóch poniższych opcji:

JSLint

  1. Zainstaluj jsl(plik wykonywalny JSLint) za pomocą ulubionego menedżera pakietów (Ubuntu apt-get, dombrew Maca itp.).

Jshint.com kierowany przez społeczność (lepszy niż JSLint)

  1. Zainstaluj node.js za pomocą swojego ulubionego menedżera pakietów.
  2. Zainstaluj Menedżera pakietów węzła : „curl https://npmjs.org/install.sh | sh ' EDYCJA: npm JEST CZĘŚCIĄ node.js TERAZ
  3. Zainstaluj jshint globalnie: „npm install jshint -g”
  4. Umieść plik konfiguracyjny jshint w katalogu $ HOME : „~ / .jshintrc”
  5. Zastąp Syntastic „s syntax_checkers/javascript.vimplik z tym jednym - EDIT: NIE JEST KONIECZNE z najnowszymi na SYNTASTIC wersji.

Cieszyć się! :)

Ory Band
źródło
1
Próbuję tego teraz. Wypróbowano sklonowanie programu Syntastic i użycie polecenia „rake install”, a następnie zastąpiono plik javascrip.vim Twoim. Nadal nie mogę dowiedzieć się, jak go użyć,: SyntasticEnable nie robi nic, o ile widzę. Będę próbować dalej…
Claes Mogren
2
Ok, zauważyłem, że Syntastic wymaga ballon_eval, który nie jest obsługiwany w MacVim. Szkoda ...
Claes Mogren
1
Próbowałem go dodać, mam nadzieję, że zostanie wyciągnięty (lub jego ładniejsza wersja) github.com/scrooloose/syntastic/pull/47
Claes Mogren
9
Po prostu spędziłem dużo czasu próbując dowiedzieć się, dlaczego nic się nie dzieje ... jeśli wyciągnąłeś plik Ory .jshintrc, pamiętaj, że po wyrażeniu „google” w obiekcie „predef” znajduje się przecinek, który powoduje, że jshint nie ładuje się i Syntastic zawiedzie po cichu.
ThePants
1
jsl dla Windows: javascriptlint.com/download.htm również, uważaj na ten problem w pliku jsl.vim
Andrew
17

Inną opcją jest jslint.vim od Jesse Halleta. Jest dostępny na GitHub i działa z oknem QuickFix Vima lub bez niego. To fajna wtyczka!

Alex Kahn
źródło
1
+1 za to. Działa świetnie. Dogodne do pobrania z vim.org/scripts/script.php?script_id=2729 . Uwaga, w systemie Windows musisz zainstalować Rubiego.
mm2001
3
Koniecznie sprawdź także JSHint, wymienione poniżej.
Alex Kahn
Projekt nie jest już w fazie rozwoju.
OrangeTux,
6

Byłem bardzo zadowolony z używania node-lint

sudo npm -g install jslint

Następnie walnij to gdzieś w swoim .vim

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

Teraz :makeuruchomi jslint. Błędy pojawiają się w oknie quickfix.

bluekeys
źródło
3

Oto instrukcje Mac OS zaktualizowane do listopada 2012 roku zakłada, że Homebrew instalowane w celu uzyskania node.js, i że masz już zainstalowany Syntastic dla VIM (używam https://github.com/carlhuda/janus który zapewnia to automatycznie):

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

Następnie dodaj „/ usr / local / share / npm / bin” do swojej PATH (prawdopodobnie w ~ / .bashrc). Na przykład dodaj wiersz: export PATH="$PATH:/usr/local/share/npm/bin"

uruchom ponownie terminal i sprawdź to

$ jshint

jest wykonywalny z wiersza poleceń. Syntastic automatycznie wykryje jsHint. Uruchom ponownie MacVima i ciesz się!

Shaun Dychko
źródło