2

私のクイックフィックスウィンドウで、カーソルの現在の行を強調表示したいと思います。

set cursorlineいくつかの調査の結果、 と を使用して現在の行の一般的な外観を構成できることがわかりましたhighlight CursorLine term=bold cterm=bold guibg=Grey40

今、私はクイックフィックスウィンドウにいるときだけそれを望んでいます。そこで、これらの 2 行を関数内にラップし、その関数を自動コマンドで呼び出しました。

au QuickFixCmdPre * call EnableSearchHighlighting()

ここまでは順調ですね。少なくとも 1 回検索した後もまだハイライトが有効になっているため、効果を再度無効にする必要がありました。そして、ここで私は立ち往生しています...

-Eventset nocursorlineでこれを呼び出すための別の関数を作成しました。QuickFixCmdPostしかし、何らかの理由でこれがすべてを壊しました。これで、quickfix-window でも強調表示されなくなりました。

事後イベントが事前イベントをオーバーライドするように感じます。ここで他に何を試すべきかわかりません。

誰かが私を助けてくれるかもしれませんし、そもそもハイライトに対する別のアプローチを持っているのでしょうか?

現在、私の .vimrc にある完全なコードは次のとおりです。

function EnableSearchHighlighting()
  set cursorline
  highlight CursorLine term=bold cterm=bold guibg=Grey40
endfunction

function DisableSearchHighlighting()
  set nocursorline  
endfunction

au QuickFixCmdPre * call EnableSearchHighlighting()
au QuickFixCmdPost * call DisableSearchHighlighting()

読んでくれてありがとう。:)

4

1 に答える 1

3

あなたのアプローチには多くの問題がありますが、主な問題 (およびそれが機能しない理由) は、エラー ウィンドウに切り替える前に、各クイックフィックス コマンドに対してQuickFixCmdPreとの両方が実行されることです。QuickFixCmdPost

これをファイルに追加しますftplugin/qf.vim

setlocal cursorline

次に、関数またはの外側にhighlight定義を追加します。vimrcautocmd

highlight CursorLine term=bold cterm=bold guibg=Grey40
于 2016-11-20T19:35:42.667 に答える