SyntasticをVimにインストールしましたが、エラーが完全に検出されています(ほとんどの場合、作業中のPythonコード)で)。ファイル内を通常どおりジャンプすると、ステータスにエラーが表示されます。カーソルが関連する行の上にあるときのバー。
私が理解できないのは、エラー間を直接ナビゲートする方法です。
SyntasticがエラーをVimロケーションリストにロードしていることを理解しています。それを:lopen
で表示し、そのウィンドウに切り替えて、行を選択してヒットします。 Enter 右の行のメインウィンドウに移動します。
しかし、私がやりたいのは、リストを開いていないことです。エラーのあるファイルを編集し、キーボードショートカットを押して、次の警告/エラーがある場所にスキップします。
それは可能ですか?ドキュメントは、:lNext
と:lprevious
が関連していることを示唆していますが、それらは私にE553: No more items
を取得します。
:lne[xt]
と:lp[revious]
は正しいショートカットです。
ただし、:lN[ext]
は:lne[xt]
と同じではありません。:lp[revious]
の代わりになります。
表示されるメッセージは、最後または最初のエラーに到達したときにこれらのコマンドがラップアラウンドしないという事実によるものです。
質問にリストしたコマンドは両方とも前のエラーにジャンプしますが、おそらく最初のエラーが発生していて、何もありませんbefore。適切なコマンドを使用してください。それらはラップアラウンドしないので、問題はありません。
コマンドの完全なリストについては、:h location-list
をお読みください。
リストに問題が1つしかない場合は、:ll
がその問題に移動します。
.vimrcの修正により、:lnext
および:lprev
にマップされたキーが1つの問題のみの場合に正しく機能するようになります(ジャンプすることにより)。最後の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
:lnext
などは入力するのが面倒なので(通常はすばやく繰り返したいので、 nimpaired.vim-便利なブラケットマッピングのペア プラグインは(とりわけ)短い]l
マッピングを提供します。
2017年10月30日作成
インストールすることをお勧めします vim-unimpaired プラグイン
これも vimリストのすばらしいリファレンス より一般的です。
Syntasticはlocations
リストを使用します。以下のコマンド(アステリックスでマークされたマッピングはunimpaired.vim
上記のプラグイン)。
ロケーションリストを使用する最良の方法は、Denite + unite-locationプラグインの組み合わせを使用することだと思います: https://github.com/chemzqm/unite-location
最初のエラー位置から最後のエラー位置へのラップアラウンドを許可します(またはその逆)。
" 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
これにより、次のエラーがキャッチされます。
E42: No Errors
E776: No location list
そしておとなしく言う:Location list empty
(クレジット lcd074 )