Есть ли ярлык для перемещения между заголовком и исходным файлом в VC ++? - PullRequest
98 голосов
/ 08 апреля 2010

Это особенность, к которой я привык в Eclipse ( Ctrl + Tab ). Есть ли эквивалент в Visual C ++?

Ответы [ 16 ]

121 голосов
/ 08 апреля 2010

В Visual Studio 2013 и более поздних версиях для этого есть сочетание клавиш по умолчанию: Ctrl + K , Ctrl + O (Вам нужно будет удерживать Ctrl и набрать ko , а затем отпустить Ctrl )

В более ранних версиях см .:

Visual Studio Macro для переключения между файлами CPP и H

или

Открыть соответствующий файл в Visual Assist

30 голосов
/ 17 декабря 2013

В Visual Studio 2013 по умолчанию это сочетание клавиш Ctrl + K , Ctrl + O

24 голосов
/ 30 ноября 2010

Вы можете добавить этот макрос в конфигурацию 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

Вот скриншот (очень широкий :), показывающий, как должны выглядеть диалоги редактора макросов и горячих клавиш / опций, чтобы помочь тем, кто с ними не знаком:

enter image description here

8 голосов
/ 24 августа 2011

Попробуйте PhatStudio . Это бесплатно и поставляется с простым установщиком.

  • ALT + S = Переключение между заголовком / исходным файлом

  • ALT + O = Открыть файл (поддерживает мгновенный поиск с помощью набора текста, как в меню «Пуск» в Windows Vista / 7).

8 голосов
/ 30 ноября 2010

Попробуйте Visual Assist, который поддерживает эту функцию (среди прочих):

http://www.wholetomato.com/

Функциональность просмотра кода, частью которой является своп заголовка / cpp, действительно хороша.

(Я также действительно оценил его функции intellisense и рефакторинга, но не все, с кем я говорил, согласились со мной.)

РЕДАКТИРОВАТЬ: только что вспомнил, плагин Nifty Solution также делает это - плюс еще одна удобная вещь, похожая на Visual Assist, хотя ничего больше - и они бесплатны:

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

(Плагин для исполнения парня тоже великолепен. Гораздо лучше, чем стандартный мусор VSSCC.)

5 голосов
/ 04 октября 2013

Я не вижу здесь этого ответа, но, по крайней мере, в Visual Studio 2012 (Express включен!) Вы можете просто назначить свою собственную команду клавиатуры для перехода к файлу заголовка (ПРИМЕЧАНИЕ. к исходному файлу, к сожалению, не возвращаюсь ...)

  1. Перейдите в Инструменты / Параметры / Среда / Клавиатура.
  2. Найдите следующую команду: EditorContextMenus.CodeWindow.GoToHeaderFile
  3. Назначьте любую комбинацию клавиш, которую вы хотите (Alt-S работает)
  4. Прибыль

Не уверен, в каких версиях VS это работает, но он не требует каких-либо надстроек и, по-видимому, справляется хотя бы в одном направлении.

5 голосов
/ 12 апреля 2010

В Visual Studio 2008 и 2010 вы можете щелкнуть правой кнопкой мыши в своем файле .cpp и выбрать «Перейти к заголовочному файлу ...», который приведет вас в одном направлении. В другом направлении, если вы щелкнете правой кнопкой мыши по объявлению в заголовке и выберите «Перейти к определению», это приведет вас в другом направлении. Возможно, вам придется пройти через диалоговое окно разрешения неоднозначности, если вы выберете конструктор, потому что имя функции соответствует имени класса, но если вы выберете что-нибудь еще, вы пойдете прямо туда, куда хотите. Я знаю, что это подход с двумя щелчками, а не одно нажатие клавиши, но он делает то, что вы хотите.

4 голосов
/ 04 февраля 2012

Попробуйте использовать Switch - это надстройка, позволяющая переключаться между исходным кодом и заголовком, кодом и дизайнером, XAML, кодовым указателем и т. Д. И т. Д.

http://www.dwmkerr.com/switch/ или напрямую от Продукты и расширения для Visual Studio

4 голосов
/ 30 ноября 2010

Если вы поместите указатель мыши на объявление функции в заголовке и нажмете F12, файл cpp откроется при определении файла cpp ... Я широко использую эту функцию!

3 голосов
/ 08 апреля 2010

Я фанат Visual Assist за это. Это не дешево, но обеспечивает гораздо больше функциональности, чем переключение между заголовком и источником. Я также часто использую его открытый файл в функциях просмотра проектов и классов. Конечно макрос бесплатный ...

...