2013-02-08 14 views
6

Zacząłem używać Syntastic plugin dla Vima, który uruchomi sprawdzanie składni na bieżącym buforze, a następnie wskaże linie z błędami. Mogę otworzyć listę błędów jako listę lokalizacji używając :Errors, a następnie przeskoczyć do linii danego błędu, naciskając Wprowadź, który przeskoczy do wiersza zawierającego błąd w moim buforze.Przejście do błędów na liście poprawek lub lokalizacji dla bieżącego wiersza w Vimie (z Syntastic)

Chcę wiedzieć, w jaki sposób mogę przeciwdziałać. Chcę przejść z wiersza w moim buforze, który jest oznaczony z powodu błędu składni do odpowiedniego wpisu na liście lokalizacji, tak, że mogę przeczytać pełny komunikat o błędzie na liście. Jak mogę to zrobić? Wiem, że :ll [n] przeskoczy na numer błędu n th na liście, ale często nie będę wiedział dokładnie, który numer błędu odpowiada danej linii w buforze. Nie mogę jednak znaleźć polecenia, które akceptuje numer linii, a nie numer błędu.

Odpowiedz

3

Myślę, że nie jest to możliwe, przynajmniej z domyślnymi poleceniami Vima lub Syntastic.

Ale Syntastic faktycznie odzwierciedla komunikat o błędzie związany z bieżącym wierszem wiersza polecenia. This feature is enabled by default.

+0

Syntastic ogłosi pierwszą wiadomość o błędzie do linii poleceń, ale często wiadomość jest okrojona; dlatego chcę osobiście przeskoczyć do błędu na liście lokalizacji. Fakt, że Syntastic może pobrać komunikat o błędzie w oparciu o bieżącą linię w buforze, daje nadzieję, że możliwe jest przeskoczenie z bufora do odpowiedniego wiersza błędu na liście lokalizacji. – gotgenes

+0

Niestety, nie ma na to polecenia. Powinieneś opublikować żądanie funkcji w narzędziu do śledzenia błędów Syntastic. – romainl

+0

Jeśli ustawisz wiersz poleceń tak, aby używał 2 linii, użyje ich zarówno dla wiadomości, które bardzo pomagają przy obcięciu. "ustaw cmdheight = 2" –

6

Masz rację, nie ma wbudowanego sposobu, aby dowiedzieć się, który błąd występuje w bieżącej pozycji kursora lub po niej, choć często by się przydał. Napisałem do tego QuickFixCurrentNumber plugin.

Po odwzorowaniu g<C-q> można przejść do pozycji na liście quickfix/location dla bieżącej pozycji kursora (lub następnego elementu za kursorem). Oferuje również mapowania, aby przejść do poprzednich/następnych błędów, ograniczając nawigację do błędów w bieżącym buforze.

1

Właśnie stworzyłem to dla mojej przeglądarki: Man. Śledzi bieżącą pozycję w oknie „locationlist” podczas nawigacji:

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()