Vim Syntastic 中的错误位置导航

Chr*_*nes 11 vim vi

我在 Vim 中安装了 Syntastic,它完美地发现了错误(主要是在我正在处理的 Python 代码中)。如果我在文件中正常跳转,当光标位于相关行上时,我会在状态栏中看到错误。

我无法弄清楚的是如何直接在错误之间导航。

我知道 Syntastic 正在将错误加载到 Vim 位置列表中,我可以使用 显示它:lopen,切换到该窗口,选择一行并点击Enter并转到右侧行的主窗口。

不过,我想做的不是打开列表,只需在有错误的文件中进行编辑,然后点击键盘快捷键即可跳到下一个警告/错误所在的位置。

那可能吗?文档表明,:lNext并且:lprevious是相关的,但他们让我E553: No more items

rom*_*inl 12

:lne[xt]并且:lp[revious]是正确的快捷方式。

:lN[ext]与 不同:lne[xt]:它是:lp[revious].

您收到的消息是由于这些命令在您到达最后一个或第一个错误时不会回绕。

您在问题中列出的命令都跳转到上一个错误,但很可能您已经遇到了第一个错误并且之前没有任何内容。使用正确的命令,记住它们不会环绕,你会很好。

阅读:h location-list完整的命令列表。


Gre*_*ell 7

如果列表中只有一个问题,:ll将导航到它。

这是您的 .vimrc 的修复程序,它将使键映射到:lnext:lprev在只有一个问题的情况下正常工作(通过跳转到它)。将末尾的 nmapping 更改为您首选的键序列。

(来自https://github.com/scrooloose/syntastic/issues/32

" 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
Run Code Online (Sandbox Code Playgroud)