VIM + JSLint?

120

Saya menghabiskan hari-hari saya di vim, saat ini menulis banyak JavaScript. Saya telah mencoba menemukan cara untuk mengintegrasikan JSLint atau sesuatu yang serupa dengan vim untuk meningkatkan pengkodean saya. Adakah yang berhasil melakukan hal seperti ini?

Edit:

mencoba ini: Memeriksa Sintaks Javascript Dari Vim , sayangnya hasilnya sangat kasar.

ben lemasurier
sumber

Jawaban:

34

Anda dapat mengikuti instruksi dari layanan web JSLint + integrasi VIM atau melakukan apa yang saya lakukan:

Unduh http://jslint.webvm.net/mylintrun.js dan http://www.jslint.com/fulljslint.js dan letakkan di direktori pilihan Anda.

Kemudian tambahkan baris berikut ke awal mylintrun.js:

var filename= arguments[0];

dan ubah baris kode terakhir di mylintrun.js ("print (...)") menjadi:

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

Ini membuat keluaran mylintrun.js menjadi daftar kesalahan yang dapat digunakan dengan jendela perbaikan cepat VIM (: copen).

Sekarang atur yang berikut di VIM:

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

di mana Anda harus mengubah / my / path / ke / js ke jalur ke SpiderMonkey dan /my/path/to/mylintrun.js ke jalur tempat Anda meletakkan file JS.

Sekarang, Anda dapat menggunakan : make in VIM dan menggunakan jendela quickfix (: he quickfix-window) untuk melompat dari kesalahan ke kesalahan.

f3lix
sumber
Mengapa Anda melakukan catting buffer dan meneruskannya sebagai argumen ke mylintrun?
jamessan
@jamessan: skrip mylintrun.js membaca file dari stdin. Jadi itulah gunanya catting. Untuk output error mylintrun.js juga membutuhkan nama file, jadi ini diberikan sebagai argumen. Anda dapat memodifikasi skrip untuk membuka file untuk dibaca daripada membaca dari stdin (membuat cat tidak perlu). Tapi saya tidak ingin repot dengan ini ... dan saya yakin ada masalah dalam membaca file jika Anda memiliki mesin JavaScript yang dikompilasi tanpa FileObject
f3lix
apa itu 'jalan menuju SpiderMonkey' di mesin Anda - Saya punya beberapa di mesin saya
Dr. Frankenstein
Saya tidak bisa mengakses mylintrun.js, apakah ada lokasi alternatif. tampaknya sudah mati
bluekeys
1
Tautan ke mylintrun.js dan fulljslint.js rusak yang membuat jawaban ini kurang berguna karena sangat bergantung pada mereka. Bisakah Anda memperbarui dengan url yang berfungsi? Kalau tidak, saya harus menghapus jawaban ini yang mengecewakan karena terlihat cukup bagus dan telah membantu banyak orang. Terima kasih.
Kev
187

Cara praktik terbaik IMO adalah:

  1. Instal plugin Syntastic Vim - Pemeriksa sintaks terbaik untuk banyak bahasa, ditambah lagi terintegrasi dengan jendela daftar lokasi (== quickfix ) Vim .
  2. Pilih salah satu dari dua opsi di bawah ini:

JSLint

  1. Instal jsl(JSLint dapat dieksekusi) menggunakan manajer paket favorit Anda (Ubuntu apt-get, Mac rumahbrew , dll.).

Jshint.com berbasis komunitas (lebih baik dari JSLint)

  1. Instal node.js menggunakan manajer paket favorit Anda.
  2. Instal Node Package Manager : 'curl https://npmjs.org/install.sh | sh ' EDIT: npm ADALAH BAGIAN DARI node.js SEKARANG
  3. Instal jshint secara global: 'npm install jshint -g'
  4. Letakkan file konfigurasi jshint Anda di $ HOME dir: '~ / .jshintrc'
  5. Timpa Syntastic 's syntax_checkers/javascript.vimberkas dengan yang satu ini - EDIT: TIDAK LAGI PERLU DENGAN TERBARU SYNTASTIC VERSION.

Nikmati! :)

Ory Band
sumber
1
Saya mencoba ini sekarang. Mencoba mengkloning Syntastic dan menggunakan perintah "rake install" dan kemudian mengganti file javascrip.vim dengan milik Anda. Masih tidak tahu cara menggunakannya,: SyntasticEnable tidak melakukan apa pun sejauh yang saya bisa lihat. Saya akan terus mencoba ..
Claes Mogren
2
Oke, perhatikan bahwa Syntastic memerlukan ballon_eval, yang tidak didukung di MacVim. Sayang sekali ..
Claes Mogren
1
Mencoba menambahkannya, berharap itu (atau versi yang lebih cantik) ditarik github.com/scrooloose/syntastic/pull/47
Claes Mogren
9
Saya baru saja menghabiskan waktu lama mencoba mencari tahu mengapa tidak terjadi apa-apa ... jika Anda menarik .jshintrc Ory berhati-hatilah bahwa ada tanda koma setelah "google" di objek "predef" yang menyebabkan jshint gagal dimuat dan Sintastik gagal diam-diam.
ThePants
1
jsl untuk Windows: javascriptlint.com/download.htm juga, hati-hati di file jsl.vim untuk masalah ini: vim.1045645.n5.nabble.com/…
Andrew
17

Pilihan lainnya adalah jslint.vim dari Jesse Hallet. Ini tersedia di GitHub dan bekerja dengan atau tanpa jendela QuickFix Vim. Itu plugin yang bagus!

Alex Kahn
sumber
1
1 untuk ini. Bekerja dengan baik. Dapat diunduh dengan mudah dari vim.org/scripts/script.php?script_id=2729 . Catatan, di Windows Anda harus menginstal Ruby.
mm2001
3
Pastikan juga untuk memeriksa JSHint, yang disebutkan di bawah ini.
Alex Kahn
Proyek tidak lagi dalam pengembangan.
OrangeTux
6

Saya sangat senang menggunakan node-lint

sudo npm -g install jslint

Kemudian pukul ini di suatu tempat di .vim

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

Sekarang a :makeakan menjalankan jslint. Kesalahan muncul di jendela perbaikan cepat.

bluekeys
sumber
3

Berikut adalah instruksi Mac OS yang diperbarui untuk November 2012. Diasumsikan Anda telah menginstal Homebrew untuk mendapatkan Node.js, dan Anda telah menginstal Syntastic untuk Vim (saya menggunakan https://github.com/carlhuda/janus yang mana menyediakan ini secara otomatis):

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

Kemudian tambahkan '/ usr / local / share / npm / bin' ke PATH Anda (mungkin di ~ / .bashrc). Misalnya, tambahkan baris: export PATH="$PATH:/usr/local/share/npm/bin"

restart Terminal Anda dan periksa

$ jshint

dapat dieksekusi dari baris perintah. Syntastic akan menemukan jsHint secara otomatis. Mulai ulang MacVim dan nikmatilah!

Shaun Dychko
sumber