vim - VIM 中的 grep 在 vim 中显示结果之前打开带有结果的终端
问题描述
我在终端中运行 vim,每当我使用 grep 搜索某些东西时,比如
:grep search_for filename
它关闭 vim,在终端中显示结果并显示“按 Enter 继续”消息,并且只有在我按 Enter 后,它才会在 vim 中显示结果。如何防止此终端打开并直接在vim中显示结果?
解决方案
一种方法是执行以下操作:
function! Grep(...)
return system(join([&grepprg] + [a:1] + [expandcmd(join(a:000[1:-1], ' '))], ' '))
endfunction
command! -nargs=+ -complete=file_in_path -bar Grep cgetexpr Grep(<f-args>)
command! -nargs=+ -complete=file_in_path -bar LGrep lgetexpr Grep(<f-args>)
cnoreabbrev <expr> grep (getcmdtype() ==# ':' && getcmdline() ==# 'grep') ? 'Grep' : 'grep'
cnoreabbrev <expr> lgrep (getcmdtype() ==# ':' && getcmdline() ==# 'lgrep') ? 'LGrep' : 'lgrep'
augroup quickfix
autocmd!
autocmd QuickFixCmdPost cgetexpr cwindow
autocmd QuickFixCmdPost lgetexpr lwindow
augroup END
这将使您:grep foo
无需“按 Enter”提示即可输入。我建议您也阅读文章/要点。
推荐阅读
- python - 需要有关在 for 循环中打印列表的帮助
- ios - 在 StoryBoard 中调整集合视图标题的大小
- python-3.7 - 如何在字符串中间连接变量?
- python-3.x - 如何在Python中慢慢画一条线
- php - 如何确定一行的某个项目,然后用它执行查询?
- java - 当我在不同的活动中时如何从 ImageView 更改图像
- javascript - 问题嵌套映射与数组反应
- angular - 为什么 behaviorsubject 导致我的函数运行多次?
- javascript - 在静态网站上缓存来自前端 ajax 的后端响应的最佳实践?
- javascript - 我创建了一个构造函数 CAR,但它的意思是“c1.model();” 调用函数时不返回任何值