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.

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.


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ę! :)


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


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.


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ę!


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.