:vimgrep和MacVim中的quickfix窗口

时间:2011-01-02 16:31:30

标签: vim grep macvim

我正在从Textmate转换到MacVim,我正在努力复制Textmate的“在项目中查找”功能。我可以使用:vimgrep /foo/g **/*.py进行搜索并使用:cope打开quickfix窗口。从那里我可以导航并打开适当的比赛而不会出问题。

我的问题是,如果我打开的比赛不正确,我找不到一种方法来恢复搜索结果窗口而不再运行整个搜索。我可以再次使用:cope打开quickfox窗口,但它只包含1个结果,我刚打开的文件。

搜索多个文件和管理结果的一般工作流程是什么?

7 个答案:

答案 0 :(得分:4)

我遇到了与quickfix相同的问题,在注意到您对filetype plugin indent on的评论导致quickfix窗口立即清除后,将其跟踪到一个插件:jslint,每次javascript文件时都设置了quickfix窗口被打开或写入。您可能已经为某些打开的文件类型启用了类似的插件。

答案 1 :(得分:3)

我通常不使用vimgrep,我使用两个插件之一: Ackgrep。也许你有更好的运气使用这两个中的一个。

答案 2 :(得分:3)

您可以使用:cnext:cprevious浏览quickfix列表。我发现unimpaired的映射非常有用,]q :cnext[q :cprevious。 如果您只想要映射而不是整个未受损的插件,请在.vimrc文件中添加以下内容。

nnoremap ]q :cnext<cr>
nnoremap [q :cprevious<cr>

答案 3 :(得分:0)

如果我理解正确,你想搜索一个特定的字符串,它可以在你的项目的许多文件中,然后用该字符串做一些修改,然后返回到原始窗口和(如果需要),做同样的再过程?

如果情况并非如此,请忽略我的帖子,否则请使用cscope。

  1. 使用以下方法构建cscope数据库: 项目根目录中的cscope -Rb。这将创建cscope.out文件

  2. 打开vim并使用以下命令添加cscope数据库:

    :cs add

  3. 找到字符串:

    :cs f s

  4. 从命令3结果转到您希望的文件并进行必要的修改。

  5. 再次使用第3步,或按ctrl + ^返回原始文件。

答案 4 :(得分:0)

dreel建议的可能是一个修复。我有同样的问题,quickfix内容消失,事实证明它是由pyflakes.vim linter引起的。 linter试图为lint错误创建quickfix条目,但它只是从搜索中清除quickfix内容的效果。我为linter插件设置了一个禁用quickfix支持的选项,它修复了问题。

答案 5 :(得分:0)

如果我没记错的话,问题是Vim脚本/插件以某种方式干扰了quickfix窗口的正常操作。我已经意识到,在处理像这样的Vim问题时,最好将Vim剥离回原来的基本要素并查看问题是否仍然存在。

答案 6 :(得分:0)

:colder:cnewer命令可用于导航到上一个/更新的quickfix(错误)列表。

从vim帮助:

<强>:更冷

:col[der] [count]   Go to older error list.  When [count] is given, do
            this [count] times.  When already at the oldest error
            list, an error message is given.

<强>:cnewer

:cnew[er] [count]   Go to newer error list.  When [count] is given, do
            this [count] times.  When already at the newest error
            list, an error message is given.