Как автоматически обновить результат поиска vimgrep в окне быстрого исправления? - PullRequest
0 голосов
/ 14 мая 2018

Как автоматически обновлять результаты поиска vimgrep из окна быстрого исправления после автообновления файла из-за изменений?

Я использую: vim / pattern /% для поиска и размещения результатов в окне быстрого исправления.

1 Ответ

0 голосов
/ 16 мая 2018

Вы всегда можете сделать <up> в командной строке с префиксом :vimgrep, чтобы упростить историю поиска. Вы также можете проверить q: и использовать ? / / для поиска команды для повторного выполнения.

Если заголовок быстрого исправления установлен правильно, вы можете использовать следующую команду:

: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 file:

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 использует заголовок быстрого исправления для получения команды быстрого исправления. Если заголовок установлен неправильно, обновление может работать некорректно. Также я не уверен, какие гарантии дает Vim для запуска FileChangedShellPost. Вы можете выполнить проверку с помощью команды :checktime.

Для получения дополнительной помощи см .:

:h getqflist()
:h :execute
:h :get
:h q:
:h cmdwin
:h c_Up
:h FileChangedShellPost
:h :checktime
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...