2013-02-08 7 views
6

Syntastic pluginをVimに使用し始めました。これは現在のバッファで構文チェッカーを実行し、エラーのある行を示します。私は:Errorsを使用して位置リストとしてエラーリストを開き、次にを入力して特定のエラーの行にジャンプすることができます。を入力します。これは、私のバッファ内のエラーを含む行にジャンプします。Vimの現在の行のクイックフィックスまたはロケーションリストにジャンプします(Syntaxを使用)

どのように私は反対を行うことができます知りたいです。私はリスト内の完全なエラーメッセージを読むことができるように、ロケーションリストの対応するエントリに構文エラーがあるとマークされたバッファ内の行に行きたい。これどうやってするの?私は:ll [n]がリスト内のn番目のエラーにジャンプすることを知っていますが、バッファ内の指定された行にどのエラー番号が対応しているかはわかりません。しかし、エラー番号ではなく行番号を受け付けるコマンドが見つかりません。

答えて

3

私は、少なくともデフォルトのVimコマンドやSyntasticでは不可能だと思います。

しかし、シンタックスは、コマンドラインで現在の行に関連するエラーメッセージを実際にエコーします。 This feature is enabled by default.

+0

シンタックスは、最初のエラーメッセージをコマンドラインにエコーしますが、メッセージが切り捨てられることがよくあります。したがって、私は自分自身の場所リストのエラーにジャンプしたいと思います。 Syntasticがバッファ内の現在の行に基づいてエラーメッセージを取り出すことができるという事実は、バッファから位置リストの対応するエラー行にジャンプすることが可能であることを願っています。 – gotgenes

+0

残念ながら、そのためのコマンドはありません。 SyntasticのIssue Trackerに機能リクエストを投稿する必要があります。 – romainl

+0

2行を使用するようにコマンドラインを設定すると、両方のメッセージをトランケートに役立つメッセージに使用します。 "set cmdheight = 2" –

6

現在のカーソル位置の前後にどのエラーがあるかを知る方法はありませんが、それはしばしば便利です。私はそのためにQuickFixCurrentNumber pluginと書いています。

g<C-q>マッピングでは、現在のカーソル位置(またはカーソルの次の項目)については、quickfix/locationリストの項目に移動できます。また、現在のバッファ内のエラーへのナビゲーションを制限しながら、[q/]qマッピングを使用して前/次のエラーにジャンプできます。

1

私はこれをmy:Manビューア用に作成しました。

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