4

通常、quickfix ウィンドウを開くと画面レイアウトが変更されますが、Vim はそのウィンドウを閉じると元に戻します。

しかし、レイアウトの復元が失敗する状況があります: プレビュー ウィンドウが開いているときに、垂直分割が存在し:wincmd J、クイックフィックスで実行されます (または で開かれ:botright copenます)。この場合、プレビュー ウィンドウのサイズが変更されます。

~/.vim/ftplugin/qf.vim に置いた解決策がありました。

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

  " expand quickfix when there are vertical splits
  wincmd J

  func! RestorePreviewWindow()
     let l:quickfixHeight = winheight(0)
     wincmd p " include previous window on jump list
     silent! wincmd P  " jump to preview window
     if &previewwindow " if we really get there...
        exe "resize " . (&previewheight - l:quickfixHeight - 1)
        wincmd p " back to old window
     endif
  endfunc
  augroup quickfixClosing
     au!
     au BufDelete <buffer> call RestorePreviewWindow()
  augroup END

、しかし、この問題に対するより良い/より簡単な解決策があるかどうか疑問に思っていました.

4

3 に答える 3

2

普通のVimで問題を再現できるなら( vim -N -u NONE)、vim_devメーリングリストに報告して、 Vim内で修正してもらいたい。プレビュー ウィンドウは、他の通常のウィンドウが代用できる場合、そのサイズを変更すべきではありません。

これがセットアップの特殊性にすぎない場合、実装された回避策は問題ないと思います。私はおそらく同じ線に沿ってそれを解決するでしょう。

于 2012-12-04T16:26:38.730 に答える
1

私はこの問題を抱えていて、提案された qf.vim を試しましたが、うまくいきませんでした。qf ヘルプページで =| を見つけたので、これを .vimrc に入れます:

au FileType qf botright cwindow
于 2016-06-30T21:25:41.827 に答える