VIM + JSLint?


120

Tôi dành nhiều ngày trong vim, hiện đang viết rất nhiều JavaScript. Tôi đang cố gắng tìm cách tích hợp JSLint hoặc thứ gì đó tương tự vào vim để cải thiện khả năng mã hóa của mình. Có ai quản lý để làm một cái gì đó như thế này?

Biên tập:

đã thử cái này: Kiểm tra cú pháp Javascript từ Vim , tiếc là đầu ra rất thô.

Câu trả lời:


34

Bạn có thể làm theo lời giới thiệu từ tích hợp dịch vụ web + VIM của JSLint hoặc làm những gì tôi đã làm:

Tải xuống http://jslint.webvm.net/mylintrun.jshttp://www.jslint.com/fulljslint.js và đưa chúng vào thư mục bạn chọn.

Sau đó, thêm dòng sau vào đầu mylintrun.js:

var filename= arguments[0];

và thay đổi dòng mã cuối cùng trong mylintrun.js ("print (...)") thành:

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

Điều này làm cho mylintrun.js xuất ra một danh sách lỗi có thể được sử dụng với cửa sổ VIM quickfix (: copen).

Bây giờ, hãy thiết lập những điều sau trong VIM:

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

nơi bạn phải thay đổi / my / path / to / js thành đường dẫn đến SpiderMonkey và /my/path/to/mylintrun.js thành đường dẫn bạn đặt các tệp JS.

Bây giờ, bạn có thể sử dụng : make in VIM và sử dụng cửa sổ quickfix (: he quickfix-window) để chuyển từ lỗi này sang lỗi khác.


Tại sao bạn catting vùng đệm và chuyển nó làm đối số cho mylintrun?
jamessan

@jamessan: tập lệnh mylintrun.js đọc tệp từ stdin. Vì vậy, đó là những gì catting dành cho. Đối với đầu ra lỗi, mylintrun.js cũng cần tên tệp, vì vậy nó được cung cấp như một đối số. Bạn có thể sửa đổi tập lệnh để mở tệp để đọc thay vì đọc từ stdin (khiến con mèo không cần thiết). Nhưng tôi không muốn làm phiền với điều này ... và tôi tin rằng có một vấn đề đọc file nếu bạn đã một công cụ JavaScript biên soạn w / o FileObject
f3lix

'đường dẫn đến SpiderMonkey' trên máy của bạn là gì - Tôi có một vài thứ
Tiến sĩ Frankenstein

Tôi không thể đến được tại mylintrun.js, có địa điểm nào thay thế không. nó dường như đã chết
bluekeys

1
Các liên kết đến mylintrun.js và fulljslint.js bị hỏng, điều này khiến câu trả lời này kém hữu ích hơn vì nó phụ thuộc rất nhiều vào chúng. Làm ơn, bạn có thể cập nhật các url đang hoạt động không? Nếu không, tôi sẽ cần xóa câu trả lời này, một câu trả lời ngớ ngẩn vì nó trông khá hay và đã giúp ích cho rất nhiều người. Cảm ơn.
Kev

187

Cách thực hành tốt nhất IMO là:

  1. Cài đặt plugin Syntastic Vim - Trình kiểm tra cú pháp tốt nhất cho nhiều ngôn ngữ, ngoài ra nó còn tích hợp với cửa sổ danh sách vị trí (== quickfix ) của Vim .
  2. Chọn một trong hai tùy chọn bên dưới:

JSLint

  1. Cài đặt jsl(tệp thực thi JSLint) bằng trình quản lý gói yêu thích của bạn (Ubuntu apt-get, nhàbrew của Mac , v.v.).

Jshint.com hướng tới cộng đồng (tốt hơn JSLint)

  1. Cài đặt node.js bằng trình quản lý gói yêu thích của bạn.
  2. Cài đặt trình quản lý gói Node : 'curl https://npmjs.org/install.sh | sh ' CHỈNH SỬA: npm LÀ MỘT PHẦN CỦA node.js NGAY BÂY GIỜ
  3. Cài đặt jshint trên toàn cầu: 'npm install jshint -g'
  4. Đặt tệp cấu hình jshint của bạn vào dir $ HOME : '~ / .jshintrc'
  5. Ghi đè tệp của Syntasticsyntax_checkers/javascript.vim bằng tệp này - CHỈNH SỬA: KHÔNG CẦN THIẾT VỚI PHIÊN BẢN TỔNG HỢP MỚI NHẤT.

Thưởng thức! :)


1
Tôi đang thử cái này ngay bây giờ. Đã thử sao chép Syntastic và sử dụng lệnh "rake install" và sau đó thay thế tệp javascrip.vim bằng tệp của bạn. Vẫn không thể tìm ra cách sử dụng nó,: SyntasticEnable không làm được gì theo những gì tôi có thể thấy. Tuy nhiên, tôi sẽ tiếp tục cố gắng ..
Claes Mogren

2
Được, nhận thấy rằng Syntastic yêu cầu ballon_eval, không được hỗ trợ trong MacVim. Quá tệ ..
Claes Mogren

1
Đã thử thêm nó vào, hy vọng nó (hoặc một phiên bản đẹp hơn của nó) được kéo github.com/scrooloose/syntastic/pull/47
Claes Mogren

9
Tôi chỉ dành một thời gian dài để cố gắng tìm ra lý do tại sao không có gì xảy ra ... nếu bạn kéo .jshintrc của Ory, hãy lưu ý rằng có một dấu phẩy ở cuối sau "google" trong đối tượng "predef" khiến jshint không tải được và Tổng hợp để thất bại âm thầm.
ThePants

1
jsl dành cho Windows: javascriptlint.com/download.htm cũng vậy, hãy chú ý trong tệp jsl.vim cho vấn đề này: vim.1045645.n5.nabble.com/…
Andrew

17

Một lựa chọn khác là jslint.vim từ Jesse Hallet. Nó có sẵn trên GitHub và hoạt động có hoặc không có cửa sổ QuickFix của Vim. Đó là một plugin tốt!


1
+1 cho điều này. Hoạt động tuyệt vời. Có thể tải xuống thuận tiện từ vim.org/scripts/script.php?script_id=2729 . Lưu ý, trên Windows, bạn cần cài đặt Ruby.
mm2001

3
Ngoài ra, hãy chắc chắn kiểm tra JSHint, được đề cập bên dưới.
Alex Kahn

Dự án không còn được phát triển.
OrangeTux

6

Tôi đã rất vui khi sử dụng node-lint

sudo npm -g install jslint

Sau đó, đánh dấu cái này ở đâu đó trong .vim

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

Bây giờ a :makesẽ chạy jslint. Lỗi xuất hiện trong cửa sổ sửa lỗi nhanh.


3

Đây là hướng dẫn Mac OS được cập nhật cho tháng 11 năm 2012. Giả sử bạn đã cài đặt Homebrew để tải Node.js và bạn đã cài đặt Syntastic for Vim (Tôi sử dụng https://github.com/carlhuda/janus mà cung cấp điều này tự động):

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

Sau đó thêm '/ usr / local / share / npm / bin' vào PATH của bạn (có thể là trong ~ / .bashrc). Ví dụ, thêm dòng: export PATH="$PATH:/usr/local/share/npm/bin"

khởi động lại thiết bị đầu cuối của bạn và kiểm tra xem

$ jshint

được thực thi từ dòng lệnh. Syntastic sẽ tự động khám phá jsHint. Khởi động lại MacVim và tận hưởng!


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.