Quickfixウィンドウが開いた後にカーソルラインとカーソル列を有効にする


7

パフォーマンスのため、Vim cursorlineとを無効にしcursorcolumnます。ただし、Quickfixウィンドウをジャンプする場合、ファイル内でカーソルを見つけるのは困難です。したがって、ウィンドウを開いた後、(なんらかのアクションによって)自動的に有効にcursorlinecursorcolumnますQuickfix

今私はAutocmdこのようなものを使った解決策を持っています:

autocmd BufferEnter quickfix :bufdo set cursorline cursorcolumn

これは適切な解決策ですか?もっと良いアイデアは?

どうもありがとう!


2
:h QuickFixCmdPost代わりに、イベントQuickFixCmdPost()を使用することもできますが、それが良いかどうかはわかりません。
statox

@statoxのおかげで、それはで動作するAckvimgrepというように。ただし、の場合は機能しません:copen。かなり良い解決策です!
tamlok 16

参照してください:h QuickFixCmdPre、それはイベントのトリガコマンドのリストが含まれQuickFixCmdPre(これとイベントをQuickFixCmdPost)し、実際に:copenそれらの一つではありません。だからあなたが経験している振る舞いは正常ですが、それをどのように動作させるかわかりません:copen...
statox

回答:


2

~/.vim/ftplugin/qf.vim(または$HOME/vimfiles/ftplugin/qf.vimWindowsを使用している場合)以下の内容でファイルを作成します。

" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
   finish
endif

wincmd p " go to original window
set cursorline
set cursorcolumn
wincmd p " back to quickfix window

ftpluginファイルは、ファイルタイプが特定のファイルバッファーに設定されるたびに実行されます(クイックフィックスとロケーションウィンドウにはfiletypがありますqf)。

autocmdsの代わりにfiletypeプラグインファイルを使用すると、vimrcが雑然とするのを回避できます。詳細については:help ftplugin-name:help 43およびVim FAQ 26.8を参照してください


編集:

チェックオンb:did_ftpluginは、必要に応じて無効化できるようにするため、および2回のロードを回避するために必要:help ftpluginです(を参照)。

let b:did_ftplugin = 1このファイルの目的はクイックフィックスのデフォルトのファイルタイププラグインをインクリメントし、上書きしないことですので、このファイルから省略されています。この行が追加された場合$VIMRUNTIME/ftplugin/qf.vim、で説明されて:help ftplugin-overruleいるように、での設定はスキップされます。


どうもありがとう!しかし、どういうb:did_ftplugin意味ですか?スクリプトはそれをどこにも変更しないようです。私は自分のvimrcで試してみましたが、うまくいきます!
tamlok 2016

@tamlokお役に立ててうれしいです。これをvimrcにコピーするのではなく、最初のフレーズで述べたファイルにコピーすることに注意してください。Vimはそのようなファイルを特別な方法で処理します。b:did_ftpluginパーツに関する質問を更新しました。
mMontu 16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.