2009-11-17 24 views
81

Tôi là một người dùng Vim khá mới và tôi thấy rằng đường cong học tập của nó khá dốc (ít nhất là đối với tôi). Tôi chỉ cần cài đặt this vim script để kiểm tra lỗi JavaScriptLint, hiển thị lỗi trong cửa sổ quickfix của vim khi tôi lưu bộ đệm.Bạn sử dụng tính năng quickfix của vim như thế nào?

Tuy nhiên, tôi không biết phải làm gì tiếp theo .. Làm cách nào để 'cuộn' qua tất cả các lỗi? Làm thế nào để đóng cửa sổ 'quickfix' của quickfix? Làm cách nào để tôi kiểm tra lỗi sau khi đã thực hiện thay đổi đối với mã của mình?

Tôi đã xem các tài liệu quickfix vim nhưng số lượng lệnh đang áp đảo và tôi dường như không thể tìm thấy những gì tôi muốn. Bất kỳ trợ giúp sẽ được đánh giá cao.

Câu hỏi phụ: có cách nào để javascriptlint kiểm tra lỗi js đối với mã nằm trong tệp .html không?

Cảm ơn!

Trả lời

109

Có rất nhiều commands cho QuickFix như bạn đã nói, nhưng tôi có xu hướng để tìm tôi chỉ sử dụng một phần nhỏ trong số họ:

:copen " Open the quickfix window 
:ccl " Close it 
:cw " Open it if there are "errors", close it otherwise (some people prefer this) 
:cn " Go to the next error in the window 
:cnf " Go to the first error in the next file 

tôi có xu hướng sử dụng điều này với :make:vimgrep, vì vậy tôi không thể nhận xét về trình kiểm tra lint Javascript, nhưng điều này sẽ cung cấp cho bạn một cái gì đó để bắt đầu. Về việc sử dụng chung JavascriptLint, tôi không phải là một lập trình viên javascript, nhưng có vẻ như kịch bản cho thấy một hàm gọi là "JavascriptLint", vì vậy nếu bạn muốn gọi nó theo cách thủ công, bạn có thể sử dụng :call JavascriptLint(). Tuy nhiên, nó hoạt động trên bản sao đĩa của tệp, vì vậy nó sẽ phải được lưu trước tiên. Nếu (và chỉ nếu) dòng lệnh jsl hoạt động trên các tệp html, bạn sẽ có thể sử dụng :call JavascriptLint() trên tệp html để kiểm tra javascript nội bộ. Bạn cũng có thể làm:

autocmd BufWritePost,FileWritePost *.html call JavascriptLint() 

để tự động hóa. Nếu jsl không hỗ trợ các tệp html, thì (ngắn vá ứng dụng hoặc yêu cầu tác giả thay đổi nó), đó có thể là nguyên nhân bị mất ...

+0

Cảm ơn, các lệnh đó là một khởi đầu tốt, tôi sẽ chỉ phải chơi một chút và quen với cách nó hoạt động. Nếu tôi sử dụng: cn để đi đến lỗi trong cửa sổ qf, tôi có thể chuyển đến cửa sổ bằng mã của mình mà không thoát khỏi cửa sổ qf không? Nó có thể nhảy vào dòng có lỗi không? Và đề xuất sử dụng của bạn: gọi cho các công trình, tuy nhiên nó hoạt động theo các liên kết

5

cửa sổ Quickfix hoạt động chủ yếu giống như bất kỳ cửa sổ vim nào khác: j xuống một dòng, k lên một dòng,: cn để chuyển sang lỗi/cảnh báo tiếp theo, v.v.

thử nghiệm!

+1

+1 để thử nghiệm, đó là cách tôi học được mọi thứ. – hora

14

Bạn cũng có thể sử dụng :cc 2 (hoặc bất kỳ số nào khác) để chuyển đến, trong trường hợp này, lỗi thứ hai trong cửa sổ quickfix. Điều hướng với :cn, :cc 4, v.v. sẽ đặt con trỏ trên dòng đang được đề cập đến.

8

Cách tốt nhất-thực hành tích hợp JavaScript cú pháp kiểm tra được sử dụng Syntastic Vim plugin, đó là sử dụng Vim của vị trí danh sách (đó là song song vớiQuickFix) cửa sổ.

Tôi đã viết câu trả lời cho this questionthis question giải thích làm thế nào để làm điều đó, cộng thêm cũng làm thế nào để có được duyệt mã nguồn/khóa-list cho Vim sử dụng dựa vào cộng đồng jshint.com (đó là cách tốt hơn so với JSLint IMO) và của Mozilla DoctorJS (trước đây là jsctags).

39

Cách dễ nhất để điều hướng danh sách quickfix (hoặc danh sách vị trí, cho vấn đề đó) là the unimpaired plugin.

Khi cửa sổ quickfix được điền, [q]q chuyển tiếp và quay lại (tương ứng) trong danh sách quickfix. [Q]Q chuyển đến đầu và cuối (đặc biệt hữu ích nếu bạn chỉ có một mục trong danh sách; điều này khiến vim phàn nàn về [q]q). Vì vậy, các quy trình làm việc là:

  1. Chạy bất cứ lệnh populates danh sách QuickFix
  2. Loại [Q để đi đến mục đầu tiên
  3. Di chuyển qua mục tiếp theo (nếu có) với [q]q

Nếu bạn đang sử dụng Syntastic, bạn sẽ nhận được danh sách vị trí thay vì danh sách quickfix. Không vấn đề gì; chỉ cần sử dụng [L, ]L, [l]l theo cách tương tự.

unimpaired có vô số ánh xạ ích khác nữa - [e]e "bong bóng" đường lên xuống, [<Space>]<Space> dòng chèn trống trên và dưới, vv Tôi đã rất ngạc nhiên không ai đề cập đến nó ở đây trước; đó có thể là vì nó không tồn tại cho đến tháng 1 năm 2010, mặc dù câu hỏi đã được hỏi vào năm 2009.

4

Có thể tùy chọn này không tồn tại khi câu hỏi này được viết (hoặc có thể tôi đang xấu hổ vì có điều gì đó trong số .vimrc của mình) điều đó làm cho điều này xảy ra) nhưng khi tôi nhận được Quickfix List, tôi chỉ điều hướng nó với jk sau đó nhấn <CR> (tức là phím Enter) để chuyển đến vị trí đó trong tệp.

Sau đó, để quay lại Quickfix List Tôi nhập Ctrl + Wj để "di chuyển xuống cửa sổ" và tôi quay lại.

Cuối cùng, khi hoàn thành, tôi chỉ cần nhập :q, như tôi sẽ đóng mọi cửa sổ thông thường.

+0

Đó là những gì tôi muốn làm, nhưng tôi nhận được "Không thể thực hiện thay đổi, 'có thể sửa đổi' bị tắt". –

12

Đặt hai dòng sau đây trong tập tin vimrc của bạn:

map <C-j> :cn<CR> 
map <C-k> :cp<CR> 

Bây giờ bạn có thể điều hướng thông qua các lỗi sử dụng Ctrl-j và ctrl-k, mà bắt chước tiêu chuẩn lên và xuống chuyển động lệnh j và k .

Các vấn đề liên quan