2

我正在从 Textmate 转换为 MacVim,并且正在努力复制 Textmate 的“在项目中查找”功能。我可以很好地搜索:vimgrep /foo/g **/*.py并使用:cope. 从那里我可以毫无问题地导航到并打开适当的匹配。

我的问题是,如果我打开的匹配不是正确的匹配,我无法找到一种方法在不重新运行整个搜索的情况下恢复搜索结果窗口。我可以再次打开 quickfox 窗口,:cope但它只包含 1 个结果,即我刚刚打开的文件。

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

4

7 回答 7

4

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

于 2011-10-05T22:04:23.530 回答
3

我通常不使用 vimgrep,我使用两个插件之一: Ackgrep。也许您使用这两者之一会更好。

于 2011-01-02T18:38:35.610 回答
3

:cnext您可以使用和浏览快速修复列表:cprevious。我发现unimpaired的映射非常有用,因此]qfor:cnext[qfor :cprevious。如果您只想要映射而不是整个未损坏的插件,请将以下内容放入您的 .vimrc 文件中。

nnoremap ]q :cnext<cr>
nnoremap [q :cprevious<cr>
于 2011-01-02T21:05:49.123 回答
0

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

于 2012-02-01T16:57:40.067 回答
0

如果我理解正确,您想搜索可以在项目的许多文件中的特定字符串,然后对该字符串进行一些修改,然后返回原始窗口并(如果需要)再次执行相同的过程?

如果不是这种情况,请忽略我的帖子,否则请使用 cscope。

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

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

    :cs 添加

  3. 找到字符串为:

    :cs fs

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

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

于 2011-01-02T17:16:58.823 回答
0

如果我没记错的话,问题是 Vim 脚本/插件以某种方式干扰了快速修复窗口的正常操作。我已经意识到,在处理这样的 Vim 问题时,最好将 Vim 剥离到最基本的部分,看看问题是否仍然存在。

于 2012-07-21T19:07:05.583 回答
0

和命令可用于导航到以前/较新的快速修复(错误)列表:colder:cnewer

从 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.
于 2013-04-26T20:45:48.243 回答