Bug 描述
当前行为:
- 按 Ctrl+Shift+F 执行搜索。
- 按 F4 几次。
- 编辑搜索项的位置,注意搜索窗格中活动位置消失了。
- 按 F4。编辑器位置跳转到第一个找到的项目。
我期望的行为:
- 按 Ctrl+Shift+F 执行搜索。
- 按 F4 几次。
- 编辑搜索项的位置,即使它不再匹配搜索词。
- 按 F4。编辑器位置应该跳转到上一个搜索项,尽管它已经不存在了。
我的直觉是搜索窗格在编辑时会丢失选择,即使编辑不会使选定的条目消失。但如果能够在工作流程中不丢失搜索条目的大致选择位置,那就太好了。之前的条目应该成为下一个 F4 后的查找位置,这样下一个 F4 就能找到下一个条目的位置。
非问题部分
此问题仅与使用 F4(或相应的命令)单独导航搜索位置有关,而不涉及其他人按下 Ctrl+Shift+F 等情况。
VS Code 版本信息
Code 1.86.2 ( 903b1e9 , 2024-02-13T19:40:56.878Z)
操作系统版本:Windows_NT x64 10.0.22631
5条答案
按热度按时间disbfnqx1#
感谢您提出这个问题!看起来您可能正在使用旧版本的VS Code,最新稳定版本是1.87.0。请尝试升级到最新版本并检查此问题是否仍然存在。
快乐编码!
5n0oy7gb2#
如果搜索条目因我的编辑而消失时,相同编号的位置也会被选中,那就太好了,尽管不太符合人体工程学。这样我就可以进行一次来回切换(shift+F4, F4)来导航到下一个条目。
axr492tv3#
你好!如果可能的话,我想参与这个项目。我刚加入,但很乐意提供帮助。
谢谢:)
wlzqhblo4#
当然可以!我相信我们正在从当前编辑器更新文本结果,这发生在:
vscode/src/vs/workbench/contrib/search/browser/searchModel.ts
第524行到第537行
| | privateupdateMatchesForModel(): void{ |
| | // 这个函数在超时后被调用,可能会在模型已经被销毁之后触发 |
| | if(!this._model){ |
| | return; |
| | } |
| | this._textMatches=newMap<string,Match>(); |
| | |
| | constwordSeparators=this._query.isWordMatch&&this._query.wordSeparators ? this._query.wordSeparators : null; |
| | constmatches=this._model |
| | .findMatches(this._query.pattern,this._model.getFullModelRange(),!!this._query.isRegExp,!!this._query.isCaseSensitive,wordSeparators,false,this._maxResults??Number.MAX_SAFE_INTEGER); |
| | |
| | this.updateMatches(matches,true,this._model,false); |
| | } |
然而,搜索视图中可以看到
selectNextMatch
需要树中的某个元素被选中:vscode/src/vs/workbench/contrib/search/browser/searchView.ts
第1030行 in dff6d9f
| | const[selected]=this.tree.getSelection(); |
所以我想我们需要找到一种方法来表示:“当我们由于模型更改而刷新结果时,只需将选择移到树中的上一个项目”。目前,树上的选择只是消失,导致
F4
从顶部开始。bn31dyow5#
我也在努力解决这个问题(很多),我想说这是一个回归问题,这个问题在之前的vscode版本中并不存在,它大约从v1.70版本开始出现(我不记得具体是哪一个版本)。对我来说,这是最令人烦恼的问题之一。