如何在vimgrep之后在vim中打开多个文件
我正在使用gvim。在当前目录上使用如何在vimgrep之后在vim中打开多个文件,vim,vimgrep,Vim,Vimgrep,我正在使用gvim。在当前目录上使用vimgrep查找*.sql文件中的文本。当它搜索文件时,一次只显示文件名,最后打开一个文件 是否可以将所有文件作为选项卡打开?基本上,我想打开所有文件,因为我想用其他文本替换“vimgrepled”模式 发现这个插件在这方面非常有用 为了自动化快速修复列表位置上的操作,我编写了一个命令 类似于为每个项目执行命令的:bufdo或:windo command! -nargs=+ Qfixdo call QuickFixDo(<q-args>) fun
vimgrep
查找*.sql
文件中的文本。当它搜索文件时,一次只显示文件名,最后打开一个文件
是否可以将所有文件作为选项卡打开?基本上,我想打开所有文件,因为我想用其他文本替换“vimgrepled”模式 发现这个插件在这方面非常有用
为了自动化快速修复列表位置上的操作,我编写了一个命令 类似于为每个项目执行命令的
:bufdo
或:windo
command! -nargs=+ Qfixdo call QuickFixDo(<q-args>)
function! QuickFixDo(cmd)
let bufnam = {}
for q in getqflist()
let bufnam[q.bufnr] = bufname(q.bufnr)
endfor
for n in keys(bufnam)
exe 'buffer' n
exe a:cmd
update
endfor
endfunction
此外,可以以相同的方式重复替换本身
:Qfixdo %s/pattern/string/
这有点难,因为快速修复列表存储位置,而不仅仅是文件。那么我应该只搜索并替换多个文件吗?忘记打开它们。我仍然需要一个受影响的文件名列表。您可以使用
:cw
在窗口中打开列表,然后提取文件名。我喜欢这个解决方案,但请。@nelstrom:Wow!有趣的是,我们可以看到,用Vim方式思考如何能够为类似的问题提供几乎相同的解决方案。尽管如此,我自己提出了这个函数,所以这个特定答案的功劳不是由于Al,尽管代码确实非常相似。@ib我很抱歉。考虑到Vim有bufdo
、windo
、tabdo
和argdo
@nelstrom,Vim没有内置某种quickfixdo似乎很愚蠢:别提它。完全同意没有用于在快速修复列表文件上重复命令的内置命令。事实上,这正是Vim用户一遍又一遍地重新发明它的原因。@nelstrom:顺便说一句,在搜索堆栈溢出的类似解决方案时(阅读您的评论后),我发现了将args
设置到快速修复列表文件并使用argdo
的方法。这是一个非常优雅的解决方法!
:Qfixdo %s/pattern/string/