如果因更改文件而自动更新文件后,如何在quickfix窗口中自动更新搜索vimgrep结果?
我使用:vim / pattern /%来搜索并将结果放入quickfix窗口。
答案 0 :(得分:1)
您始终可以在命令行中使用前缀<up>
执行:vimgrep
,以便更轻松地搜索历史记录。您可能还想查看q:
并使用?
/ /
来搜索重新执行的命令。
假设正确设置了quickfix标题,您可以使用以下命令:
:execute get(getqflist({'title':1}), 'title')
但是我不确定这适用于所有:grep
/ :make
命令。你还需要一个较新的Vim版本来获得Quckfix列表标题(我认为是Vim 8+)。
如果您发现自己经常这样做,可能需要绑定映射或命令。
command! -nargs=0 -bar QFRefresh execute get(getqflist({'title':1}), 'title')
现在如何自动添加?一旦检测到文件更改,我们就可以使用FileChangedShellPost
autocmd来运行我们的QFRefresh
命令。将以下内容添加到vimrc
文件中:
augroup QFRefresh
autocmd!
autocmd FileChangedShellPost * if get(b:, 'qfrefresh_auto', 0) | QFRefresh | endif
augroup END
command! -nargs=0 -bar QFAutoRefreshToggle let b:qfrefresh_auto = !get(b:, 'qfrefresh_auto', 0) | echo b:qfrefresh_auto ? 'Auto Refresh' : 'No Auto Refresh'
现在,您可以使用:QFAutoRefreshToggle
切换刷新文件。
注意:如前所述QFRefresh
使用quickfix的标题来获取quickfix命令。如果未正确设置标题,则刷新可能无法正常工作。此外,我不确定Vim在触发FileChangedShellPost
时有什么保证。您可以通过:checktime
命令强制检查。
如需更多帮助,请参阅:
:h getqflist()
:h :execute
:h :get
:h q:
:h cmdwin
:h c_Up
:h FileChangedShellPost
:h :checktime