【问题标题】:How to get Visual Studio code to select the correct tab when closing the current tab?关闭当前选项卡时如何让 Visual Studio 代码选择正确的选项卡?
【发布时间】:2020-06-06 11:17:28
【问题描述】:

当我在 Visual Studio Code 中关闭选项卡时,我希望它的行为与我在关闭选项卡时使用的所有其他选项卡式编辑器/浏览器一样。

我已经阅读了给Is there a vscode settings which specifies which tab to open when closing a tab? 的答案,这意味着在settings.json 中设置"workbench.editor.focusRecentEditorAfterClose": false 将产生所需的行为——不幸的是,它不会。

给定五个标签ABCDE,并且当前选择了标签C

  • 当我按下 close tab 快捷方式时,我使用过的所有其他程序都会将选项卡 B 选中 - 它会靠近左侧。

  • Visual Studio Code 将选项卡 D 选中 - 它在右侧关闭。这让我抓狂,好像我连续关闭了两个标签页,错误标签页被关闭以进行第二次关闭操作。

没有什么特别错误关于靠右而不是靠左,除了事实上几乎所有其他程序都靠左。这相当于在网站上放置一个搜索框并让搜索“foo bar”执行“foo or bar”而不是“foo and bar”——因为谷歌, Bing、DuckDuckGo、eBay、亚马逊、Twitter 和 Facebook(仅举几个主要网站)都使用,它不必要地混淆人们并减慢他们的速度。

我找不到用于配置此问题的设置,也无法在 Marketplace 中找到可以解决此问题的任何内容。有可能吗?

【问题讨论】:

  • VSC 使用 Chrome,靠近右侧的是 Chrome 行为。添加功能请求
  • 您使用什么键绑定来关闭编辑器? Ctrl+W?
  • 我的观点恰恰相反——“向右”关闭是正确的、标准的标签关闭行为。原因:这就是Firefox Chrome的当前行为,而这两个程序可能是全世界最常用的标签应用程序(可能除了中国当前最顶级的互联网浏览器) )。因此,我想说大多数人可能对特定的标签关闭行为更加熟悉和舒适。
  • @eriegz 不过,考虑到首选项列表的大小,这仍然无法解释为什么没有选项 :) 无论如何,虽然 browsers 可能会关闭在右边,我用过的所有其他 IDE 都在左边。 VS Code 可能基于 Chrome,但它仍然是一个 IDE,而不是浏览器,所以应该像 IDE 一样工作,而不是浏览器……

标签: visual-studio-code vscode-settings


【解决方案1】:

您可以创建自己的宏来完成您想要的。您需要一个宏,因为您需要运行两个命令:关闭编辑器,然后将编辑器聚焦到左侧。我不相信有任何内置的方法可以做到这一点。

所以,使用像 multi-command 这样的宏扩展,这会进入您的设置:

"multiCommand.commands": [
  {
    "command": "multiCommand.closeEditorFocusLeft",
    "sequence": [
      "workbench.action.closeActiveEditor",
      "workbench.action.previousEditor",
    ]
  }
]

和 keybinding.json 中的键绑定:

  {
    "key": "ctrl+w",
    "command": "-workbench.action.closeActiveEditor"
  },
  {
    "key": "ctrl+w",
    "command": "extension.multiCommand.execute",
    "args": {
      "command": "multiCommand.closeEditorFocusLeft"
    },
    // "when": "editorFocus"
  },

我在这里假设您使用 Ctrl+W 关闭活动编辑器,我首先禁用了默认命令,然后将其分配给宏。但是您可以根据需要进行任何键绑定。它有效。

在我的测试中,需要设置

Workbench > Editor: Focus Recent Editor On Close

已禁用。因此,vscode 实际上会尝试向右而不是最近打开的编辑器,无论它可能在哪里(然后转到该编辑器的左侧)。

不幸的是,在扩展之外,我认为这是实现您想要的唯一方法。

【讨论】:

  • 谢谢——我不认为有办法让它只在当前选项卡不是最左边时运行?我尝试在宏上设置editorFocus && activeEditorGroupIndex != '1',在原始View: Close Editor 上设置editorFocus && activeEditorGroupIndex == '1',但它会忽略宏并向右关闭,除非我完全禁用View: Close Editor——然后关闭最左边的选项卡会选中最右边的选项卡,这是错误的事情™。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-12
  • 2010-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
相关资源
最近更新 更多