在VC ++中,是否有在标题和源文件之间移动的快捷方式?


112

这是我在Eclipse(Ctrl+ Tab)中已经习惯的功能。在Visual C ++中是否有等效项?


另请参阅此问题
idbrii 2011年

@LưuVĩnhPhúc当您在Eclipse中使用标题或源代码时,请按Alt-Tab键,并且Eclipse应该在源和标题之间切换,前提是您已正确索引了项目。
MrMas '16

Answers:


137

在Visual Studio 2013和更高版本中,有一个默认的键盘快捷键用于:Ctrl+ KCtrl+ O (您需要按住Ctrl并键入ko,然后释放Ctrl

在早期版本中,请参阅:

Visual Studio宏在CPP和H文件之间切换

要么

在Visual Assist中打开相应的文件


2
视觉辅助是一个伟大的工具-我推荐它使用MSVC所有开发人员
斯蒂芬·纳特

10
对于懒惰的VisualAssist用户:Alt + O
nimcap 2012年

2
有人有VS2013解决方案吗?
2013年


3
好吧,我的坏。没意识到Ctrl + K和Ctrl + O实际上是一个快捷键。没有两个相同的选择。对于VS新手来说,答案中可能值得一提:)
Petr Peller 2015年

31

在Visual Studio 2013中,默认的键盘快捷键是Ctrl+ KCtrl+O


不适用于我。2013年社区版。常规设置。“自定义/键盘”窗口中的通用名称是什么?
Jurlie

12
命令名称:EditorContextMenus.CodeWindow.ToggleHeaderCodeFile
codekaizen

24

您可以将此宏添加到VS配置中(通过工具->宏->宏资源管理器),然后为其分配一个热键(通过工具->选项->环境->键盘)。

我只是写了它(本来就是要尝试它多年的意思!),但到目前为止,它似乎在VS2008和VS2010中都可以使用。

由于它是一个宏,因此您可以对其进行编辑以包含所需的任何规则(例如,在其他文件夹中查找,或者如果您有多个cpp文件或类似文件共享一个标头,则可以使用特殊的命名规则)。

这是宏(我相信它可能会写得更好;我对VS对象不熟悉,只有意识到的宏在编写东西的一半左右就使用.Net了):):

Sub FileSwitch()
    Try
        Dim CurrentPath As String = DTE.ActiveDocument.FullName
        Dim OtherPath As String

        If (IO.Path.HasExtension(CurrentPath)) Then
            Dim CurrentExtension As String = IO.Path.GetExtension(CurrentPath)

            Select Case CurrentExtension
                Case ".h", ".hpp", ".hxx"
                    OtherPath = IO.Path.ChangeExtension(CurrentPath, ".cpp")
                    If (Not IO.File.Exists(OtherPath)) Then
                        OtherPath = IO.Path.ChangeExtension(CurrentPath, ".c")
                        If (Not IO.File.Exists(OtherPath)) Then
                            OtherPath = IO.Path.ChangeExtension(CurrentPath, ".cxx")
                        End If
                    End If
                Case ".cpp", ".c", ".cxx"
                    OtherPath = IO.Path.ChangeExtension(CurrentPath, ".h")
                    If (Not IO.File.Exists(OtherPath)) Then
                        OtherPath = IO.Path.ChangeExtension(CurrentPath, ".hpp")
                        If (Not IO.File.Exists(OtherPath)) Then
                            OtherPath = IO.Path.ChangeExtension(CurrentPath, ".hxx")
                        End If
                    End If
                Case Else
            End Select
            If (OtherPath <> Nothing) Then
                DTE.ItemOperations.OpenFile(OtherPath)
            End If
        End If

    Catch ex As System.Exception
        MsgBox(ex.Message)
    End Try
End Sub

这是一个(非常宽的:)屏幕截图,显示了宏编辑器和热键/选项对话框的外观,以帮助不熟悉它们的人:

在此处输入图片说明


1
另一个喜欢的VS宏技巧:记录一个将调试器附加到您一直在工作的exe的宏,然后将其粘贴在工具栏上。只要您需要调试,就可以单击该运行过程的附件。
戴维森

哇,太好了!比Nifty Solutions插件更好用,因为该插件只能在.h和.cpp之间切换,而不能从.hpp切换到.cpp
j00hi 2011年

但是将宏放在哪里?由于某种原因,我的VS2010已具有“ Module1”宏...,因此我双击对其进行了编辑,然后将宏代码插入了“ Public Module Module1”中。从那里,工具=>选项=>环境=>键盘在文本编辑器中设置快捷方式。
Qwertie 2012年

优秀,经过测试和工作。答案发布于2010年11月-到2012年7月仍然有效。完美!
rptr

1
Alex:宏对于Visual Studio是全局的。它们保存在“宏项目”中(可让您保存和加载宏组),但就我所知,它们与通常的解决方案/项目类型无关。我在默认宏项目中定义了几个宏,这些宏在打开任何解决方案或项目之前(和之后)都可用。
Leo Davidson

9

试试PhatStudio。它是免费的,并且安装简单。

  • ALT+ S=在头文件/源文件之间切换

  • ALT+ O=打开文件(支持通过键入进行即时搜索,例如Windows Vista / 7中的“开始”菜单)。


谢谢,这是最简单的解决方案,并且也是免费的。
罗素·戴维斯

8

试试Visual Assist,它具有以下功能(包括其他功能):

http://www.wholetomato.com/

代码浏览功能(其中的标头/ cpp交换是其中的一部分)非常好。

(我也确实对其智能感知和重构功能进行了评分,但并不是所有与我交谈过的人都同意我的看法。)

编辑:刚刚记得,Nifty解决方案插件也可以做到这一点-加上类似Visual Assist的另一种方便的东西,尽管没有别的什么-它们是免费的:

http://code.google.com/p/niftyplugins/

(这个家伙的perforce插件也很棒。比默认的VSSCC垃圾要好得多。)


我将给Visual Assist一个外观。我以为它仅适用于.NET语言。
Nate

5

在Visual Studio 2008和2010中,您可以右键单击.cpp文件,然后选择“转到头文件...”,这将使您朝一个方向前进。对于另一个方向,如果右键单击标题中要声明的内容,然后选择“转到定义”,则将您引向另一个方向。如果选择构造函数,则可能必须经过歧义解析对话框,因为函数名称与类名称匹配,但是如果选择其他任何内容,则将直接转到所需的位置。我知道这是一种两次单击的方法,而不是一个按键,但是它确实可以实现您想要的功能。


5

如果将鼠标置于标头中的函数声明上并按F12,则cpp文件将在cpp文件的定义处打开...我广泛使用此功能!


5

我在这里看不到这个答案,但是至少在Visual Studio 2012(包括Express!)中,您可以分配自己的键盘命令以转到头文件(注意:只有一种方式-您不能不幸的是回到源文件...)

  1. 转到工具/选项/环境/键盘。
  2. 查找以下命令:EditorContextMenus.CodeWindow.GoToHeaderFile
  3. 分配所需的任意组合键(Alt-S可用)
  4. 利润

不知道它可以在哪个版本的VS中运行,但是它不需要任何加载项,并且似乎在至少一个方向上可以解决问题。


在Visual Studio 2013中,存在一个名为EditorContextMenus.CodeWindow.ToggleHeaderCodeFile的命令,该命令正是这样做的,可以在.h和.cpp文件之间切换。
Jaanus Varus


3

我是Visual Assist的爱好者。它并不便宜,但它提供了比在标头和源之间切换更多的功能。我还在项目和类浏览功能中经常使用它的打开文件。当然,宏是免费的...



2

正如其他人提到的,对于Visual Studio 2013,该命令名为:

EditorContextMenus.CodeWindow.ToggleHeaderCodeFile

并且它具有默认的组合键:Ctrl+ KCtrl+ O,但是如果您在菜单中引入了喜欢的新组合键,则可以更改它。

按快捷键:

工具->选项->环境->键盘

因此,您可以选择一个自定义按键组合,因为我最喜欢.h到.cpp的开关是Ctrl+ Tab


1

视觉辅助也不支持Visual Studio Express版本。因此,如果您使用的是IDE,那么您将无法使用宏。



0

MS用自己的(有限的)智慧决定在MSVS 2012中删除宏,因此上面的宏不起作用。

对于MSVS 2012,我发现了这一点:

http://www.dwmkerr.com/switch/

它是高度可配置的+如果您想帮助改进它,可以在GitHub上进行。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.