gpt4 book ai didi

visual-studio-code - 在 Visual Studio Code 中禁用查看

转载 作者:行者123 更新时间:2023-12-03 05:29:38 25 4
gpt4 key购买 nike

有没有办法禁用 Visual Studio Code 中的按住 Ctrl 键单击“查看”功能?理想情况下,我希望按住 Ctrl 键单击以在新选项卡中打开包含定义的文件。

编辑:我提交了an issue至少让它不那么困惑。显然我的术语有点错误。

为了澄清,有两个操作:

  1. 右键单击 -> 查看定义
  2. 右键单击 -> 转到定义(绑定(bind)到 Ctrl 键单击)

他们的行为如下:

  1. PD,单一定义
    • 打开显示定义的内联界面。
  2. PD,多种定义

    • 打开显示定义的内联界面。
  3. GtD,单一定义

    • 打开包含定义的文件。
  4. GtD,多重定义
    • 随机选择一个定义,打开该文件,一个显示所有定义的内联界面。

除了最后一个之外,所有这些都很好。做这两件事会导致一个非常冗余和困惑的用户界面,如下所示:

Confusing!

应该有一种方法可以实现以下行为之一:

  • 随机选择一个定义,打开该文件。

或者:

  • 打开内联界面,显示所有定义(在当前文件中)

最佳答案

我已提出拉取请求来修复此问题 https://github.com/Microsoft/vscode/pull/68023 ,但在此之前,这里有一个临时修复程序,用于修补 VSCode 安装文件。您需要重新应用每个更新。

编辑:修复已合并到 vscode 中。以后的版本应该会有。

通过此修复,Ctrl+Click 将:

  • 如果有多个定义,请使用 peek
  • 使用 peek 时,不会导航到编辑器中的最佳匹配,导致您失去位置
  • 如果只有一个定义,它将导航到最佳匹配,而不是打开查看。
<小时/>
  1. 找出需要修补的函数是什么样的。方法为DefinitionAction.prototype._onResult(editorService, editor, model)

  2. 进入VSCode安装目录。 %LocalAppData%\Programs\Microsoft VS Code 并右键打开 VSCode 中的目录,这样我们就可以使用 VSCode 的搜索功能来搜索每个文件中的文本。

  3. 搜索 _onResult 并评估每个结果,检查签名和正文是否与我们在步骤 1 中看到的函数的预期相匹配。

    • 从第 1 步我们知道,函数 _openReference 就在附近。用它来缩小搜索范围。
    • 我在 workbench.main.js2454 中找到了它。使用括号匹配来查找结尾或知道它紧接在 t.prototype._openReference
    • 之前结束
    • 格式化后的函数如下(异步函数被编译为状态机,这就是它看起来与源 typescript 完全不同的原因):

      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]
      }
      })
      })
      }
  4. 将函数替换为以下内容(如果使用相同版本)或格式,并编辑您发现与此示例类似的函数。请注意,o 变量是全局\窗口对象,可能会发生变化。

    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]
    }
    })
    })
    }
  5. 启动 VSCode。您将收到您的代码安装似乎已损坏。请重新安装。只需点击齿轮图标,然后点击不再显示

关于visual-studio-code - 在 Visual Studio Code 中禁用查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41460845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com