在单个 Visual Studio 会话中打开文件的两个实例

Posted

技术标签:

【中文标题】在单个 Visual Studio 会话中打开文件的两个实例【英文标题】:Open two instances of a file in a single Visual Studio session 【发布时间】:2010-10-18 06:07:28 【问题描述】:

我有一个文件,xyz.cpp。我想在 Visual Studio 中打开这个文件的两个实例(顺便说一句,我使用的是 Visual Studio 2005)。我为什么要这样做?我想并排比较同一文件的两个部分。我知道解决方法,例如:

    制作文件的副本。但问题是它并不优雅,我不想每次遇到这种情况时都复制。

    我可以将窗口一分为二。拆分它的问题是我只能水平拆分它。水平分割的结果是我屏幕的右半边是空白。

如果我能够垂直拆分它或打开同一个文件的两个实例,这将增加我可以比较的代码行数。

【问题讨论】:

如果您只想简单地比较文件的某些部分,您可以使用 Window |拆分将从中间水平拆分文件。 @vexe 完美。正是我需要的。拆分窗口,都编辑同一个文件。 您没有接受最高票数的答案有什么原因吗? @cp.engr,来自他的个人资料:“上次见于 2009 年 12 月 6 日 12:41”。遗憾的是,高级用户无法将答案标记为已接受。 相关帖子 - Visual Studio: How can I see the same file in two separate tab groups? 【参考方案1】:

这是怎么做的......

    选择您想要两个副本的标签 从菜单中选择菜单WindowNew Window。 右键单击新标签并选择新建垂直标签组

如果 New Window 未在 *Window 菜单中列出,请注意该命令确实存在,即使在 Visual Studio 2017 中也是如此。使用 menu 将其添加到 Window 菜单工具自定义命令。此时决定在哪里放置 New Window 命令并选择 Add Command

更新于“2018 年 7 月 30 日”

在 Visual Studio Code 1.25.1 及更高版本中

方式 1

您可以在侧面板(资源管理器)中简单地左键单击您的文件,然后按 Ctrl + Enter

方式 2

只需在 Visual Studio Code 侧面板(资源管理器)中右键单击您的文件,然后选择第一个选项向侧面打开

【讨论】:

如果您有一些可用的屏幕空间,例如第二台显示器,您还可以将新选项卡拖出 Visual Studio 并在第二台显示器中查看。 您只能对某些文件类型执行此操作...例如,您不能在同一个 .xaml 文件上打开两个窗口。这是一个无赖,因为这就是我想做的! @Shlomi.A.试试Luke's Answer 对于 WPF 中的 XAML,新窗口选项不存在。 此方法有效,但在我的 VS 2010 上,快捷方式 [Ctrl] [Shift] [N] 绑定到 File > New > Project【参考方案2】:

对于 Visual Basic、html 和 JScript 以及 RDL 表达式,PaulB's answer 中提到的 Window > New Window 选项被禁用。 但是,可以在注册表中更改一个选项以启用菜单项。

所有其他语言不限于单个代码窗口,因此您无需编辑注册表即可使用PaulB's answer。

在 Windows 注册表中启用新窗口。[1] [2]

    转到以下注册表项。此示例适用于 Basic (Visual Basic),但关键也适用于 HTML、JScript 和 RDL 表达式。

    64 位操作系统:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Languages\Language Services\Basic 32 位操作系统:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Languages\Language Services\Basic

    找到值Single Code Window Only 并执行以下操作之一:

    设置为 0 重命名值 删除值(小心!)

这将启用“新窗口”菜单项,但它可能在菜单中仍然不可见。

添加菜单项

要真正看到新窗口菜单项,我必须将它重新添加到菜单中:

工具 > 自定义... > 命令 > 添加命令... 选择“菜单栏”,然后在下拉菜单中选择“窗口”菜单 添加命令... > 窗口 > 新窗口 > 确定

恢复注册表值 将此复制粘贴到记事本,另存为 .reg 文件并将文件导入注册表以恢复初始设置。

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Languages\Language Services\Basic] “仅单个代码窗口”=dword:00000001

【讨论】:

无需编辑 C# 文件的注册表,因为应该已经为 C# 文件启用了“新窗口”菜单项(在 VS 2010 中)。您只需对 VB、HTML 或 JScript 执行此操作。根据this MS Connect issue report,任何与此相关的问题都已针对 VB 进行了修复,您只需删除或重命名注册表项即可启用该功能。 这也适用于 Visual Basic 2010 Express,我很高兴向您报告。注册表项略有不同:[HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\VBExpress\10.0\Languages\Language Services\Basic]。 对我不起作用。尝试重新启动VS2010,重新启动计算机后会给它一次机会......(谁知道注册表项是如何读取/存储/更新的) 我刚刚测试了这个(我猜我的注册表项被更新或其他东西覆盖了)。我不需要重新启动。我在运行 VS2010 时更改了密钥,“新窗口”仍然显示为灰色。然后关闭 VS2010 并打开 VS2010 并且“新窗口”可用。 在 VS2010 中,翻转 JScript 的注册表位确实允许为 javascript 文件打开第二个选项卡(耶),但每个选项卡中除了白色之外什么都没有呈现(嘘)。【参考方案3】:

转到菜单Windows新窗口

【讨论】:

整个多元宇宙中最佳解决方案的诺贝尔奖归你@Kishore 简单、直观、有用!【参考方案4】:

您可以使用 Windows新窗口 选项来复制当前窗口。查看更多信息:Why I like Visual Studio 2010? Undock Windows

【讨论】:

【参考方案5】:

打开文件(如果您使用多个选项卡组,请确保您的文件已被选中)。

菜单窗口分割 (或者,在编辑器的垂直滚动条上方有一个小块 - 抓住它并向下拖动)

这为您提供了同一文件的两个(水平)视图。请注意,任何编辑操作都会反映在这两个视图上。

完成后,抓住拆分器并将其一直向上拖动(或菜单WindowRemove Split)。

【讨论】:

(Sri:抱歉,视图行中的“水平”是对齐的……或者一个视图高于另一个)。 AFAIK,垂直(并排)视图是不可能的。 似乎没有读过 OP,他提到他很清楚这件事。【参考方案6】:

如何在 Visual Studio 2019 中并排打开同一文件的两个实例:

    打开文件。

    点击Window -> New Window

    应该打开一个新窗口,其中包含相同的文件。

    点击Window -> New Vertical Document Group

结果:

【讨论】:

基于此,也可以使用键盘快捷键:Alt+W,N,Alt+W,V【参考方案7】:

打开文件后,转到命令窗口(菜单查看其他窗口命令窗口,或者只是Ctrl + Alt + A)

类型:

Window.NewWindow

然后

Window.NewVerticalTabGroup

为我工作 (Visual Studio 2017)。

或者使用菜单:

菜单窗口新窗口

菜单窗口新建垂直点击组

【讨论】:

你为我的儿子做了上帝的工作。谢谢。【参考方案8】:

Luke's answer 对我不起作用。 “新窗口”命令已在自定义设置中列出,但未显示在 .js 选项卡上下文菜单中,尽管删除了注册表设置。

所以我用了:

工具

自定义...

键盘...

向下滚动以选择 Window.NewWindow

我按下并分配了快捷键,Ctrl + Shift + W

这对我有用。

==== 编辑 ====

嗯,“工作”太强了。我的键盘快捷键确实在同一个 JavaScript 文件上打开了另一个选项卡,但毫无帮助的是它不会呈现内容;它只是一个空白的窗口!你可能会有更好的运气。

【讨论】:

谢谢。这对我来说适用于 VS2012/VB.net。打开工具 - 选项 - (在环境下)键盘 - 从下拉列表中选择 Visual Basic 6 - 从命令列表中选择 Window.NewWindow - 按下 ctrl + n, ctrl + w【参考方案9】:

Window 菜单,New Horizo​​ntal/Vertical Tab Group 我想就可以了。

【讨论】:

AFAI 看,你不能在不同的标签组中打开同一个文件【参考方案10】:

在使用 Visual Studio 2013 和 VB.NET 时,我发现您可以非常轻松地自定义菜单并添加“新窗口”命令 - 无需弄乱注册表!

只有天知道为什么微软选择不包含某些语言的命令...?

【讨论】:

对我来说很轻松!菜单工具 > 自定义。然后在 Commands 选项卡中,在第一个下拉菜单中选择 Window,然后单击 Add Command 按钮,瞧! (Visual Studio 2019)【参考方案11】:

对于较新的版本(例如 Visual Studio 2017)

选择要复制的窗口。 转到窗口选项卡并单击列表顶部的拆分。 完成后,再次单击以将其关闭。

【讨论】:

一个窗口分成两半与两个窗口不同。【参考方案12】:

对于同一文件无法在垂直选项卡组中打开的文件类型(例如 .vb 文件),您可以

打开 2 个不同的 Visual Studio 实例 在每个实例中打开同一个文件 调整 IDE 窗口的大小并将它们并排放置以实现您的布局。

如果您在一个实例中保存到磁盘,则在切换到另一个实例时必须重新加载文件。此外,如果您在这两种情况下都进行了编辑,则必须在第二次保存时解决。在这两种情况下,Visual Studio 都会向您提示各种选项。如果您只在一个实例中进行编辑,您会稍微简化您的生活。

【讨论】:

@Odrade - 你能指出适用于所有类型文件的正确答案吗... @Jason 好的,但是说您不能多次打开同一个文件以进行并排比较仍然是不正确的。这显然是可能的,至少对于 .cs 文件是这样。 @Odrade 你是对的。我已经编辑以尝试纠正它。如果您想根据以前的版本删除 cmets,请告知您。 @Odrade 开始尝试Luke's answer 这比为 VB 用户打开两个 VS 实例要好得多,我赞成。 这似乎是 html 文件唯一可行的解​​决方法,其中注册表编辑只会提供一个空白的第二个窗口【参考方案13】:

我没有 Visual Studio 2005 的副本,但此过程适用于 Visual Studio 2008:

    打开 xyz.cpp 和其他文件。 右键单击选项卡标题并选择新的垂直选项卡组。 左键单击第一个选项卡组中的其他文件。 再次通过解决方案资源管理器打开 xyz.cpp。

您现在应该在不同的垂直选项卡组中拥有两个文件实例。

【讨论】:

在我的 VS2K5 和 VS2K8 上,它只在我的第二个选项卡中显示原始实例。这是如果我双击解决方案资源管理器,从文件资源管理器拖放,或通过文件 |打开菜单。 @Simeon - 如果没有其他文件打开,就会发生这种情况(步骤 1 的第二部分。) 它知道原始文件是在另一个标签组中打开的。也许这又与它允许复制的文件有关。【参考方案14】:

我想出了一个技巧,可能会产生原始答案中预期的结果。

如果你在一个源代码管理的两个窗口中都有你想要的文件,你可以在文件上右击选择比较,就可以比较了

如果您进行比较,您将有一个名为 diff 的新窗口,向您显示文件的内容。

这当然不理想,因为差异窗口的差异颜色会污染文本。 注意:您可以将要打开的文件和空文件进行比较,然后您的窗口就会变成非常难看的绿色背景。

这并不完美,它是一种 hack,但这是我发现在两个窗口中真正拥有相同文件的唯一方法。

【讨论】:

【参考方案15】:

要处理一个长文件的两个部分,只需使用快捷方式 ( Ctrl + \ ) 或在选定选项卡上单击拆分编辑器窗口。该图标位于 VS Code 的右上角。

【讨论】:

这个答案适用于 VS Code,而不是 Visual Studio【参考方案16】:

由于问题太老了,不知道回答这个问题就像打死马跑还是不跑。但是如果有人使用 VSCode 1.62.1 或更高版本,要在另一个选项卡中查看相同的脚本,只需右键单击工具栏上的脚本名称并选择“向右拆分”(或向上/向下/向左拆分)。

【讨论】:

以上是关于在单个 Visual Studio 会话中打开文件的两个实例的主要内容,如果未能解决你的问题,请参考以下文章

通过命令行在 Visual Studio 中编译单个独立文件

如何在 Visual Studio 2017 的单个表单上打开多个 OpenGL 窗口?

visual studio code如何运行c

Visual Studio 每次都重新编译单个文件

如何在 Visual Studio 2008 中创建单个可执行文件?

dev文件用visual studio怎么打开