有没有办法禁用ctrl-click' peek' Visual Studio Code中的功能?理想情况下,我想按住Ctrl键单击以在新选项卡中打开包含定义的文件。
修改:我提交an issue至少使其不那么混乱。显然我的术语有点不对。
澄清一下,有两个动作:
答案 0 :(得分:6)
我已发出拉动请求来修复此https://github.com/Microsoft/vscode/pull/68023,但在此之前,这里是临时补丁,用于修补VSCode安装文件。您需要重新应用每个更新。
使用此修复程序,Ctrl +单击将:
弄清楚需要打补丁的功能是什么样的。方法是DefinitionAction.prototype._onResult(editorService, editor, model)
转到VSCode安装目录。 %LocalAppData%\Programs\Microsoft VS Code
,然后右键单击并在VSCode中打开目录,以便我们可以使用VSCode的搜索功能在每个文件中搜索文本。
搜索_onResult
并评估每个结果,检查签名和正文是否与我们在步骤1中看到的功能所期望的相符。
_openReference
在附近。使用它来缩小搜索范围。workbench.main.js
行2454
中找到了它。使用方括号匹配来找到结尾,或者知道结尾在t.prototype._openReference
格式化后的函数如下(异步函数被编译为状态机,这就是为什么它看起来不像源打字稿的原因):
t.prototype._onResult = function (e, t, r) {
return i(this, void 0, void 0, function () {
var i, s, a;
return n(this, function (n) {
switch (n.label) {
case 0:
return i = r.getAriaMessage(), o.alert(i), this._configuration.openInPeek ? (this._openInPeek(e, t, r), [3, 3]) : [3, 1];
case 1:
return s = r.nearestReference(t.getModel().uri, t.getPosition()), [4, this._openReference(t, e, s, this._configuration.openToSide)];
case 2:
(a = n.sent()) && r.references.length > 1 ? this._openInPeek(e, a, r) : r.dispose(), n.label = 3;
case 3:
return [2]
}
})
})
}
用以下内容替换该功能(如果使用相同版本)或格式化并编辑发现与该示例相似的功能。请注意,o
变量是global \ window对象,可以更改。
t.prototype._onResult = function (e, t, r) {
return i(this, void 0, void 0, function () {
return n(this, function (n) {
switch (n.label) {
case 0:
return r.getAriaMessage(), o.alert(r.getAriaMessage()), this._configuration.openInPeek || r.references.length > 1 ? (this._openInPeek(e, t, r), [3, 3]) : [3, 1];
case 1:
return [4, this._openReference(t, e, r.nearestReference(t.getModel().uri, t.getPosition()), this._configuration.openToSide)];
case 2:
r.dispose(), n.label = 3;
case 3:
return [2]
}
})
})
}
启动VSCode。您将得到一个Your Code installation appears to be corrupt. Please reinstall
。只需点击齿轮图标,然后点击Don't Show Again.
答案 1 :(得分:1)
这似乎已在较新版本中得到修复。如果我现在将鼠标悬停在FOO
的{{1}}上,我会看到正常的工具提示foo.cpp
。如果我按下Ctrl键,消息将展开以添加文本“单击以显示2个定义”,如果我在按住Ctrl的同时单击,则会根据请求获得查看窗口。
答案 2 :(得分:0)
我试图找到一种解决方法,可以更改 CMD 的行为+单击转到实现,但似乎还没有解决方案?
VSCode文档默认显示其设置以转到定义,而无法修改它: https://code.visualstudio.com/docs/editor/editingevolved
在我的计算机(Mac)上,如果按某个方法按 CMD +单击或 F12 ,它将引导我转到定义的Peek视图,但是 CMD + F12 会将我定向到实现而不会出现偷看行为。