ChatGPT解决这个技术问题 Extra ChatGPT

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

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

制作文件的副本。但问题是它并不优雅,我不想每次遇到这种情况时都复制。我可以把窗口一分为二。拆分它的问题是我只能水平拆分它。水平分割的结果是我屏幕的右半部分是空白。

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

如果您只想简单地比较文件的某些部分,您可以使用 Window |拆分将从中间水平拆分文件。
@vexe 完美。正是我需要的。拆分窗口,都编辑同一个文件。
您没有接受最高票数的答案有什么原因吗?
@cp.engr,来自他的个人资料:“上次见于 2009 年 12 月 6 日 12:41”。遗憾的是,高级代表用户无法将答案标记为已接受。

P
Peter Mortensen

这是如何做到的......

从菜单中选择您想要两个 Select menu Window → New Window 副本的选项卡。右键单击新选项卡并选择新建垂直选项卡组

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

更新于“2018 年 7 月 30 日”

在 Visual Studio Code 1.25.1 及更高版本中

方式一

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

方式二

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


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

对于 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仅执行以下操作之一: 将其设置为 0 重命名值 删除值(小心!)

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

添加菜单项

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

工具 > 自定义... > 命令 > 添加命令...

选择“菜单栏”,然后在下拉菜单中选择“窗口”菜单

添加命令...>窗口>新窗口>确定

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

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Languages\Language Services\Basic]
"Single Code Window Only"=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 文件打开第二个选项卡(耶),但每个选项卡中除了白色之外什么都没有呈现(嘘)。
P
Peter Mortensen

转到菜单 → 窗口 → 新窗口:

https://i.stack.imgur.com/cJplN.png


整个多元宇宙中最佳解决方案的诺贝尔奖授予你@Kishore
简单,直观,有用!
P
Peter Mortensen

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


P
Peter Mortensen

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

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

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

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


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

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

打开文件。单击窗口-> 新窗口。应该使用相同的文件打开一个新窗口。单击窗口-> 新建垂直文档组。

https://i.stack.imgur.com/TUGN5.png


基于此,也可以使用键盘快捷键执行此操作:Alt+W,N,Alt+W,V
P
Peter Mortensen

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

类型:

Window.NewWindow

接着

Window.NewVerticalTabGroup

为我工作(Visual Studio 2017)。

或使用菜单:

菜单窗口→新窗口

菜单窗口→新的垂直点击组


你做了上帝的工作,我的儿子。谢谢你。
P
Peter Mortensen

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

所以我用:

工具

定制...

键盘...

向下滚动以选择 Window.NewWindow

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

这对我有用。

==== 编辑 ====

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


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

我认为,窗口菜单,新的水平/垂直选项卡组就可以了。


AFAI 看到,你不能在不同的标签组中打开同一个文件
P
Peter Mortensen

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

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


为我轻松工作!菜单工具 > 自定义。然后在命令选项卡中,在第一个下拉列表中选择窗口,然后单击添加命令按钮,瞧! (视觉工作室 2019)
P
Peter Mortensen

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

选择要复制的窗口。

转到窗口选项卡,然后单击列表顶部的拆分。

完成后,再次单击它以将其关闭。


分成两半的窗口与两个窗口不同。
J
Jason S

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

打开 2 个不同的 Visual Studio 实例

在每个实例中打开相同的文件

调整 IDE 窗口的大小并将它们并排放置以实现您的布局。

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


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

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

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

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


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

https://i.stack.imgur.com/EDELN.jpg


此答案适用于 VS Code,而不适用于 Visual Studio
不是问什么,而是一个扩展的好主意,真的。是的,我不会否决这个答案。哈哈。
b
berserck

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

如果您在源代码管理的两个窗口中都有您想要的文件,您可以右键单击该文件并选择比较,您可以比较

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

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

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


E
EMT

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


问题是关于 Visual Studio,而不是 Visual Studio Code。
@David 是的,我同意你的看法。我错过了,我道歉。
没必要道歉! :^)