Вы можете добавить этот макрос в конфигурацию 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
Вот скриншот (очень широкий :), показывающий, как должны выглядеть диалоги редактора макросов и горячих клавиш / опций, чтобы помочь тем, кто с ними не знаком: