Vim Syntastic'te konum navigasyonu hatası


11

Ben Syntastic Vim yüklü var ve mükemmel hataları (çoğunlukla üzerinde çalışıyorum Python kodu) buluyor. Dosyada normal olarak atlarsam, imleç ilgili bir satırın üzerindeyken durum çubuğundaki hataları görürüm.

Ne anlayamıyorum doğrudan hatalar arasında gezinmek olduğunu.

O syntastic bir Vim konum listesine hataları yükleniyor anlamak ve ben gösterildiğini yapabilir :lopen, bu pencereye geçin bir çizgi ve isabet seçebilir Enterve sağ çizgi üzerinde ana pencereye alınacak.

Ama ne yapmak istiyorum, liste açık değil, sadece hataları ile dosyada düzenleme ve sonraki uyarı / hatanın olduğu yere atlamak için bir klavye kısayolunu vurmak değil.

Mümkün mü? Dokümanlar bunu önerir :lNextve :lpreviouskonuyla ilgilidir, ama beni yakalarlar E553: No more items.

Yanıtlar:


12

:lne[xt]ve :lp[revious]doğru kısayollardır.

Ama :lN[ext]aynı şey değil :lne[xt]: bir alternatif :lp[revious].

Aldığınız mesaj, son veya ilk hataya ulaştığınızda bu komutun etrafta sarılmamasından kaynaklanmaktadır.

Sorunuzda listelediğiniz komutların her ikisi de önceki hataya atlar, ancak zaten ilk hatada olmanız ve daha önce hiçbir şey olmamanız olasılığı vardır . doğru komutları kullanın, etrafta sarılmadıklarını ve iyi olacağınızı unutmayın.

:h location-listKomutların tam listesi için okuyun .


Sarmalarını sağlamanın bir yolu var mı?
BallpointBen

Hayır, sarmalarını sağlamanın bir yolu yok. Bununla birlikte, bu iş parçacığında ve eklentiler biçiminde çeşitli sarıcı tabanlı çözümler vardır. Kendi eklentisi vim-qf sahip olanlar . Sadece birkaç eşleme için tam teşekküllü bir eklenti istemiyorsanız uygulama burada .
romainl

6

Listede yalnızca bir sorun varsa, :llo konuya gider.

İşte .vimrc için anahtarların eşleştirilmesini :lnextve :lprevyalnızca bir sorun olması durumunda doğru şekilde çalışmasını sağlayacak bir düzeltme (buna atlayarak). Sondaki nmappings'i tercih ettiğiniz anahtar dizisine değiştirin.

( https://github.com/scrooloose/syntastic/issues/32 adresinden )

" Fix syntastic error jumping
function! <SID>LocationPrevious()
  try
    lprev
  catch /^Vim\%((\a\+)\)\=:E553/
    llast
  endtry
endfunction

function! <SID>LocationNext()
  try
    lnext
  catch /^Vim\%((\a\+)\)\=:E553/
    lfirst
  endtry
endfunction

nnoremap <silent> <Plug>LocationPrevious    :<C-u>exe 'call <SID>LocationPrevious()'<CR>
nnoremap <silent> <Plug>LocationNext        :<C-u>exe 'call <SID>LocationNext()'<CR>
nmap <silent> e[  <Plug>LocationPrevious
nmap <silent> e]  <Plug>LocationNext

Konum listesi ilk doldurulmadan önce veya hatasız popülasyondan sonra yürütüldüğünde bu çirkin olur. Düzeltme için cevabımı görün .
Tom Hale



0

İlk hata noktasından son hata konumuna kaydırmaya izin ver (ve tersi):

" Allow :lprev to work with empty location list, or at first location
function! <SID>LocationPrevious()
  try
    lprev
  catch /:E553:/
    lfirst
  catch /:E\%(42\|776\):/
    echo "Location list empty"
  catch /.*/
    echo v:exception
  endtry
endfunction

" Allow :lnext to work with empty location list, or at last location
function! <SID>LocationNext()
  try
    lnext
  catch /:E553:/
    lfirst
  catch /:E\%(42\|776\):/
    echo "Location list empty"
  catch /.*/
    echo v:exception
  endtry
endfunction

Bu, aşağıdaki hataları yakalar:

E42: No Errors
E776: No location list

Ve uysalca diyor ki: Location list empty

( LCD074'e kredi )


Aslında, daha az tekrarlayan bir çözüm var, ancak `` echo "Konum listesi boş" ile yapabilirdi.
Tom Hale

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.