Перейти к содержимому

Использование команды lgrep в Vim и скрытие результатов

1

Я люблю использовать :lgrepкоманду в Vim для создания списка местоположений для текущего буфера. Например, я могу использовать его с регулярным выражением Perl, выполнив:

:lgrep -P 'pattern' %

Однако мне не нравится тот факт, что результаты grep отображаются, скрывая мой сеанс Vim, после завершения grep. Я хочу, чтобы результаты были помещены в окно списка местоположений, но для вывода grep (на экран), который будет подавлен. Обычно после завершения grep Vim скрывает все окна и отображает результаты grep в моем терминале. Затем я должен Press ENTER or type command to continueвернуться к сеансу Vim.

Это раздражает.

Обычно я сразу же открываю окно списка местоположений и перемещаюсь по результатам, используя это окно. Я хочу подавить отображение результатов grep, а затем предложить мне нажать ENTER, чтобы продолжить.

Это возможно?

863 просмотра
Michael Goldshteyn спросил 12 лет назад
M 434

2 ответа

5
Принятый ответ

Да, просто добавьте :silentкоманду:

:silent lgrep -P 'pattern' % 

Выдержка из :help :silent:

 ":silent" will also avoid the hit-enter prompt. When using this for an external command, this may cause the screen to be messed up. Use |CTRL-L| to clean it up then. 

Это замечательно, за исключением того, что вы вынуждены использовать Ctrl-l для последующей очистки. Есть ли способ для этого автоматически перекрасить или что-то.

Michael Goldshteyn · 12 лет назад · 1

Вы можете попробовать : exe 'silent lgrep -P' pattern '%' | перерисовывать!

Ingo Karkat · 12 лет назад · 2
Ingo Karkat ответил 12 лет назад
I 17 213
0

You could use :lvim instead of :lgrep.

Because it uses an internal routine it doesn't suspend Vim and doesn't force you to hit <CR> or :redraw anything:

:lvim pattern % | lw 

And for a really low-tech approach:

:il[ist] pattern :n <------------------- your chosen line number 
romainl ответил 12 лет назад
R 17 620