在单个 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】:这是怎么做的......
-
选择您想要两个副本的标签
从菜单中选择菜单Window → New 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
并执行以下操作之一:
这将启用“新窗口”菜单项,但它可能在菜单中仍然不可见。
添加菜单项
要真正看到新窗口菜单项,我必须将它重新添加到菜单中:
工具 > 自定义... > 命令 > 添加命令... 选择“菜单栏”,然后在下拉菜单中选择“窗口”菜单 添加命令... > 窗口 > 新窗口 > 确定恢复注册表值 将此复制粘贴到记事本,另存为 .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】:打开文件(如果您使用多个选项卡组,请确保您的文件已被选中)。
菜单窗口 → 分割 (或者,在编辑器的垂直滚动条上方有一个小块 - 抓住它并向下拖动)
这为您提供了同一文件的两个(水平)视图。请注意,任何编辑操作都会反映在这两个视图上。
完成后,抓住拆分器并将其一直向上拖动(或菜单Window → Remove 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 Horizontal/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 窗口?