VIM + JSLint?


121

ฉันใช้เวลาหลายวันในกลุ่มปัจจุบันเขียน JavaScript เป็นจำนวนมาก ฉันพยายามหาวิธีรวม JSLint หรือสิ่งที่คล้ายกันเข้ากับกลุ่มเพื่อปรับปรุงการเข้ารหัสของฉัน มีใครจัดการเรื่องแบบนี้ได้บ้าง?

แก้ไข:

ลองสิ่งนี้: การตรวจสอบไวยากรณ์ Javascript จาก Vimน่าเสียดายที่ผลลัพธ์นั้นหยาบมาก

คำตอบ:


34

คุณสามารถทำตามคำแนะนำจากการรวมบริการเว็บ JSLint + VIMหรือทำสิ่งที่ฉันทำ:

ดาวน์โหลดhttp://jslint.webvm.net/mylintrun.jsและhttp://www.jslint.com/fulljslint.js และใส่ไว้ในไดเร็กทอรีที่คุณเลือก

จากนั้นเพิ่มบรรทัดต่อไปนี้ที่จุดเริ่มต้นของ mylintrun.js:

var filename= arguments[0];

และเปลี่ยนบรรทัดสุดท้ายของรหัสใน mylintrun.js ("print (... )") เป็น:

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

สิ่งนี้ทำให้ใน mylintrun.js แสดงรายการข้อผิดพลาดที่สามารถใช้กับหน้าต่าง VIM quickfix (: copen)

ตอนนี้ตั้งค่าต่อไปนี้ใน VIM:

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

ที่คุณต้องเปลี่ยน/ my / path / to / jsเป็นพา ธ ไปยัง SpiderMonkey และ/my/path/to/mylintrun.jsไปยังพา ธ ที่คุณใส่ไฟล์ JS

ตอนนี้คุณสามารถใช้: make in VIM และใช้หน้าต่างquickfix (: he quickfix-window) เพื่อข้ามจาก error เป็น error


ทำไมคุณถึงกำหนดบัฟเฟอร์และส่งต่อเป็นอาร์กิวเมนต์ไปยัง mylintrun?
jamessan

@jamessan: สคริปต์ mylintrun.js อ่านไฟล์จาก stdin นั่นคือสิ่งที่แมวมีไว้สำหรับ สำหรับเอาต์พุตข้อผิดพลาด mylintrun.js ต้องการชื่อไฟล์ด้วยดังนั้นจึงถูกกำหนดเป็นอาร์กิวเมนต์ คุณสามารถแก้ไขสคริปต์เพื่อเปิดไฟล์เพื่ออ่านแทนการอ่านจาก stdin (ทำให้แมวไม่จำเป็น) แต่ฉันไม่อยากรบกวนเรื่องนี้ ... และฉันเชื่อว่ามีปัญหาในการอ่านไฟล์หากคุณมีเอ็นจิ้น JavaScript ที่คอมไพล์โดยไม่มี FileObject
f3lix

'เส้นทางสู่ SpiderMonkey' บนเครื่องของคุณคืออะไร - ฉันมีอยู่สองสามอย่าง
ดร. แฟรงเกนสไตน์

ฉันเข้า mylintrun.js ไม่ได้มีตำแหน่งอื่นหรือไม่ ดูเหมือนจะตายแล้ว
bluekeys

1
ลิงก์ไปยัง mylintrun.js และ fulljslint.js ใช้งานไม่ได้ซึ่งทำให้คำตอบนี้มีประโยชน์น้อยกว่าเนื่องจากต้องอาศัยข้อมูลเหล่านี้เป็นอย่างมาก โปรดอัปเดตด้วย URL ที่ใช้งานได้หรือไม่ มิฉะนั้นฉันจะต้องลบคำตอบนี้ซึ่งเป็นคนเกียจคร้านเพราะมันดูดีและช่วยคนได้มาก ขอบคุณ
Kev

187

วิธีการปฏิบัติที่ดีที่สุด IMO คือ:

  1. ติดตั้งปลั๊กอิน Syntastic Vim - ตัวตรวจสอบไวยากรณ์ที่ดีที่สุดสำหรับภาษาต่างๆมากมายรวมทั้งรวมกับรายการตำแหน่งของ Vim (== quickfixหน้าต่าง ) ของ
    • ฉันแนะนำให้โคลนจาก repo GitHubและติดตั้งโดยใช้ตัวจัดการปลั๊กอินเช่นVundleหรือPathogenเนื่องจากมีการอัปเดตบ่อยกว่า
  2. เลือกหนึ่งในสองตัวเลือกด้านล่าง:

JSLint

  1. ติดตั้งjsl(ปฏิบัติการ JSLint) โดยใช้โปรแกรมจัดการแพ็คเกจที่คุณชื่นชอบ (ของ Ubuntu apt-get, บ้านbrewของ Mac ฯลฯ )

jshint.com ที่ขับเคลื่อนโดยชุมชน(ดีกว่า JSLint)

  1. ติดตั้งnode.jsโดยใช้ตัวจัดการแพ็คเกจที่คุณชื่นชอบ
  2. ติดตั้งNode Package Manager : 'curl https://npmjs.org/install.sh | sh ' แก้ไข: npm เป็นส่วนหนึ่งของ node.js ทันที
    • ดูข้อมูลเพิ่มเติมได้ที่http://npmjs.org
  3. ติดตั้งjshintทั่วโลก: 'npm install jshint -g'
  4. ใส่ไฟล์config jshint ของคุณใน$ HOME dir: '~ / .jshintrc'
  5. เขียนทับSyntasticของsyntax_checkers/javascript.vimไฟล์ที่มีหนึ่งในนี้ - แก้ไข: ไม่จำเป็นกับรูปแบบใหม่ SYNTASTIC VERSION

สนุก! :)


1
ฉันกำลังลองสิ่งนี้อยู่ในขณะนี้ พยายามโคลน Syntastic และใช้คำสั่ง "rake install" จากนั้นแทนที่ไฟล์ javascrip.vim ด้วยไฟล์ของคุณ ยังคิดไม่ออกว่าจะใช้อย่างไร: SyntasticEnable ไม่ได้ทำอะไรเท่าที่ฉันเห็น ฉันจะพยายามต่อไป ..
Claes Mogren

2
ตกลงสังเกตว่า Syntastic ต้องใช้ ballon_eval ซึ่งไม่รองรับ MacVim เสียดาย ..
Claes Mogren

1
พยายามเพิ่มมันหวังว่า (หรือเวอร์ชั่นที่สวยกว่านี้) จะถูกดึง github.com/scrooloose/syntastic/pull/47
Claes Mogren

9
ฉันใช้เวลานานในการพยายามหาสาเหตุว่าทำไมไม่มีอะไรเกิดขึ้น ... ถ้าคุณดึง. jshintrc ของ Ory โปรดทราบว่ามีเครื่องหมายจุลภาคต่อท้าย "google" ในวัตถุ "predef" ที่ทำให้ jshint ไม่สามารถโหลดและ สังเคราะห์ที่จะล้มเหลวอย่างเงียบ ๆ
ThePants

1
jsl สำหรับ Windows: javascriptlint.com/download.htmด้วยโปรดระวังในไฟล์ jsl.vim สำหรับปัญหานี้: vim.1045645.n5.nabble.com/…
Andrew

17

อีกทางเลือกหนึ่งคือjslint.vimจาก Jesse Hallet พร้อมใช้งานบน GitHub และใช้งานได้โดยมีหรือไม่มีหน้าต่าง QuickFix ของ Vim เป็นปลั๊กอินที่ดี!


1
+1 สำหรับสิ่งนี้ ใช้งานได้ดี สิ่งอำนวยความสะดวกที่สามารถดาวน์โหลดได้จากvim.org/scripts/script.php?script_id=2729 หมายเหตุบน Windows คุณจะต้องติดตั้ง Ruby
mm2001

3
อย่าลืมตรวจสอบ JSHint ที่ระบุไว้ด้านล่าง
Alex Kahn

โครงการไม่อยู่ระหว่างการพัฒนาอีกต่อไป
OrangeTux

6

ฉันมีความสุขมากกับการใช้ node-lint

sudo npm -g install jslint

จากนั้นตีมันที่ไหนสักแห่งในไฟล์ .vim

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

ตอนนี้:makeจะเรียกใช้ jslint ข้อผิดพลาดปรากฏขึ้นในหน้าต่างแก้ไขด่วน


3

นี่คือคำแนะนำของ Mac OS ที่อัปเดตสำหรับเดือนพฤศจิกายน 2012 สมมติว่าคุณได้ติดตั้งHomebrewเพื่อรับ Node.js และคุณได้ติดตั้ง Syntastic สำหรับ Vim แล้ว (ฉันใช้https://github.com/carlhuda/janusซึ่ง ให้โดยอัตโนมัติ):

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

จากนั้นเพิ่ม '/ usr / local / share / npm / bin' ใน PATH ของคุณ (อาจอยู่ใน ~ / .bashrc) ตัวอย่างเช่นเพิ่มบรรทัด: export PATH="$PATH:/usr/local/share/npm/bin"

รีสตาร์ท Terminal ของคุณและตรวจสอบว่า

$ jshint

สามารถเรียกใช้งานได้จากบรรทัดคำสั่ง Syntastic จะค้นพบ jsHint โดยอัตโนมัติ รีสตาร์ท MacVim และสนุก!


2

ดีกว่ามากคือการไปป์ผลลัพธ์ผ่าน Lynx เพื่อจัดการกับตัวเลือก HTML ที่โชคร้ายของ JSLint สำหรับรูปแบบผลลัพธ์ ฉันมีบล็อกโพสต์เกี่ยวกับวิธีการทำที่นี่:

http://www.fleegix.org/articles/2008-09-06-jslint-in-vim-through-lynx

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.