2013-02-08 24 views
6

Tôi bắt đầu sử dụng Syntastic plugin cho Vim, sẽ chạy trình kiểm tra cú pháp trên bộ đệm hiện tại và sau đó chỉ ra bất kỳ dòng nào có lỗi. Tôi có thể mở danh sách các lỗi như danh sách vị trí bằng cách sử dụng :Errors và sau đó chuyển đến dòng của một lỗi nhất định bằng cách nhấn Nhập, sẽ chuyển đến dòng chứa lỗi trong bộ đệm của tôi.Chuyển đến lỗi trong danh sách nhanh hoặc vị trí cho dòng hiện tại trong Vim (với Cú pháp)

Tôi muốn biết cách tôi có thể làm ngược lại. Tôi muốn đi từ một dòng trong bộ đệm của tôi được đánh dấu có lỗi cú pháp cho mục nhập tương ứng trong danh sách vị trí, để tôi có thể đọc thông báo lỗi đầy đủ trong danh sách. Tôi có thể làm cái này như thế nào? Tôi biết rằng :ll [n] sẽ nhảy tới lỗi số n trong danh sách, nhưng thông thường tôi sẽ không biết chính xác số lỗi nào tương ứng với dòng đã cho trong bộ đệm. Tuy nhiên, tôi không thể tìm thấy lệnh chấp nhận số dòng chứ không phải là số lỗi.

Trả lời

3

Tôi nghĩ rằng điều đó là không thể, ít nhất với các lệnh Vim hoặc Cú pháp mặc định.

Nhưng cú pháp thực sự lặp lại thông báo lỗi được liên kết với dòng hiện tại trong dòng lệnh của bạn. This feature is enabled by default.

+0

Nguyên tắc sẽ lặp lại thông báo lỗi đầu tiên cho dòng lệnh, nhưng thường thông báo bị cắt ngắn; do đó tôi muốn chuyển sang lỗi trong danh sách vị trí, bản thân mình. Thực tế là Syntastic có thể lấy thông báo lỗi dựa trên dòng hiện tại trong bộ đệm cung cấp hy vọng rằng nó có thể nhảy từ bộ đệm đến dòng lỗi tương ứng trong danh sách vị trí. – gotgenes

+0

Không có lệnh nào cho điều đó, thật không may. Bạn nên đăng một yêu cầu tính năng trên bộ theo dõi vấn đề của Syntastic. – romainl

+0

Nếu bạn thiết lập dòng lệnh của mình để sử dụng 2 dòng, nó sẽ sử dụng cả hai dòng này cho các thông điệp giúp ích rất nhiều với việc cắt xén. "đặt cmdheight = 2" –

6

Bạn nói đúng, không có cách tích hợp để tìm ra lỗi nào ở hoặc sau vị trí con trỏ hiện tại, mặc dù điều đó thường hữu ích. Tôi đã viết QuickFixCurrentNumber plugin cho điều đó.

Với ánh xạ g<C-q>, bạn có thể chuyển đến mục trong danh sách vị trí/nhanh cho vị trí con trỏ hiện tại (hoặc mục tiếp theo sau con trỏ). Nó cũng cung cấp các ánh xạ [q/]q để chuyển đến lỗi trước đó/tiếp theo trong khi giới hạn điều hướng đến lỗi trong bộ đệm hiện tại.

1

Tôi vừa tạo mục này cho tôi: Trình xem Man. Nó theo dõi mục hiện tại trong cửa sổ 'danh sách vị trí' khi điều hướng:

function! s:visibleLoc() 
    return len(filter(getwininfo(), {i,v -> v.loclist})) 
endfunc 

function! s:followLine() 
    let curLine = line(".") 
    if (exists("b:lastLine") && b:lastLine == curLine) || 0 == s:visibleLoc() 
     return 
    endif 
    let b:lastLine = line(".") 
    let ent = len(filter(getloclist("."), {i,v -> v.lnum <= curLine})) 
    if ent < 1 || (exists("b:lastEntry") && b:lastEntry == ent) 
     return 
    endif 
    let b:lastEntry = ent 
    let pos = [ 0, curLine, col("."), 0 ] 
    exe "ll ".ent 
    call setpos(".", pos) 
endfunc 

au CursorMoved <buffer> call <SID>followLine() 
Các vấn đề liên quan