我正在从Textmate转换到MacVim,我正在努力复制Textmate的“在项目中查找”功能。我可以使用:vimgrep /foo/g **/*.py
进行搜索并使用:cope
打开quickfix窗口。从那里我可以导航并打开适当的比赛而不会出问题。
我的问题是,如果我打开的比赛不正确,我找不到一种方法来恢复搜索结果窗口而不再运行整个搜索。我可以再次使用:cope
打开quickfox窗口,但它只包含1个结果,我刚打开的文件。
搜索多个文件和管理结果的一般工作流程是什么?
答案 0 :(得分:4)
我遇到了与quickfix相同的问题,在注意到您对filetype plugin indent on
的评论导致quickfix窗口立即清除后,将其跟踪到一个插件:jslint,每次javascript文件时都设置了quickfix窗口被打开或写入。您可能已经为某些打开的文件类型启用了类似的插件。
答案 1 :(得分:3)
答案 2 :(得分:3)
您可以使用:cnext
和:cprevious
浏览quickfix列表。我发现unimpaired的映射非常有用,]q
:cnext
和[q
:cprevious
。
如果您只想要映射而不是整个未受损的插件,请在.vimrc文件中添加以下内容。
nnoremap ]q :cnext<cr>
nnoremap [q :cprevious<cr>
答案 3 :(得分:0)
如果我理解正确,你想搜索一个特定的字符串,它可以在你的项目的许多文件中,然后用该字符串做一些修改,然后返回到原始窗口和(如果需要),做同样的再过程?
如果情况并非如此,请忽略我的帖子,否则请使用cscope。
使用以下方法构建cscope数据库:
项目根目录中的cscope -Rb
。这将创建cscope.out
文件
打开vim并使用以下命令添加cscope数据库:
:cs add
找到字符串:
:cs f s
从命令3结果转到您希望的文件并进行必要的修改。
再次使用第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.