Изменение поведения Ctrl + Tab для перемещения между документами в Visual Studio - PullRequest
270 голосов
/ 22 августа 2008

Можно ли изменить способ работы Ctrl + Tab и Shift + Ctrl + Tab Visual Studio? Я отключил всплывающее окно навигатора, потому что я хочу переключаться только между элементами в элементе управления вкладки. Моя проблема заключается в несоответствии того, что происходит при переходе к следующему и предыдущему документу.

Каждая другая программа, использующая элемент управления вкладками для открытого документа, который я видел, использует Ctrl + Tab для перемещения слева направо и Shift + Ctrl + Tab для перехода справа налево. Visual Studio ломает это с помощью перехода к последней выбранной вкладке. Вы никогда не можете знать, на каком документе вы окажетесь, и это никогда не бывает одинаковым дважды.

Это очень нелогично. Разве это тонкий способ побудить всех открывать сразу два документа?


Допустим, у меня открыто несколько файлов. Я работаю в одном, и мне нужно увидеть, что находится на следующей вкладке справа. В любом другом приложении на лице Земли, Ctrl + Tab доставит меня туда. Но в Visual Studio я понятия не имею, к какой из других вкладок он перейдет. Если у меня только два открытых документа, это прекрасно работает. Как только вы перейдете к трем или более, все ставки на вкладку Visual Studio решили отправить вам.

Проблема в том, что мне не нужно думать об инструменте, он должен отойти на задний план, и я должен думать о задаче. Текущее поведение вкладок выводит меня из задачи и заставляет обращать внимание на инструмент.

Ответы [ 12 ]

211 голосов
/ 04 ноября 2010

В Visual Studio 2015 (как и в предыдущих версиях VS, но вы должны установить Инструменты повышения производительности , если вы используете VS2013 или ниже), в Visual Studio есть две новые команды:

Window.NextTab и Window.PreviousTab

Просто перенесите их из Ctrl + Alt + PageUp / Ctrl + Alt + PageDown до Ctrl + Tab / Ctrl + Shift + Tab in:

Меню Инструменты -> Опции -> Среда -> Клавиатура

Примечание. В более ранних версиях, таких как Visual Studio 2010, Window.NextTab и Window.PreviousTab назывались Window.NextDocumentWellTab и Window.PreviousDocumentWellTab .

69 голосов
/ 26 апреля 2012

Visual Studio 2010 имеет встроенный способ решения этой проблемы.

По умолчанию Ctrl + Tab и Ctrl + Shift + Tab назначены на Window.[Previous/Next]..Document, но вы можете, через

Tools -> Options -> Environment -> Keyboard,

удалите эти назначения клавиш и переназначьте их на Window.[Next/Previous]Tab, чтобы добавить желаемое поведение.

51 голосов
/ 02 апреля 2013

это можно изменить, по крайней мере, в VS 2012 (я думаю, что это должно работать и для 2010).

1) TOOLS > Options > Environment > Keyboard

(Да, ИНСТРУМЕНТЫ, его VS2012!) Теперь три ярлыка для проверки.

2) Window.NextDocumentWindow - вы можете быстро туда добраться, набрав в поисковой панели сверху. Теперь это ваш враг . Уберите это, если вам это не нравится. Измените его на что-то другое (и не забывайте кнопку Assign ), если хотите иметь свою собственную, , но помните, что ярлык, каким бы он ни был в конце . Это пригодится позже.

(я имею в виду это ярлык, который запоминает вашу последнюю вкладку)

enter image description here

3) Теперь ищите Window.NextDocumentWindowNav - это то же самое, что и выше, но показывает предварительный просмотр открытых вкладок (вы можете перейти к другим окнам слишком быстро с помощью этого всплывающего окна). Я никогда не находил это полезным, хотя. Сделайте все, что упомянуто в шаге 2 (не забудьте запомнить ).

4) Window.NextTab - ваше волшебное зелье. Это позволит вам переключаться между вкладками в прямом порядке. Может быть, вы хотите CTRL + TAB ? Снова шаг 2 и запомните .

5) Теперь поместите курсор в Нажмите сочетание клавиш: текстовое поле (не имеет значения, что выбрано в настоящее время, вы не собираетесь Назначить на этот раз), и введите первый из трех (или двух или одного) ярлыков.

enter image description here

Вы увидите Ярлык, используемый в настоящее время: в списке. Убедитесь, что у вас нет повторяющейся записи для ярлыка. На картинке нет повторяющихся записей. Если у вас есть (редкость), скажите X, затем перейдите к X и удалите ярлык. Повторите этот шаг и для других ярлыков.

6) Теперь повторите 1-5 для Previous ярлыков (желательно добавив Shift ).

7) Бонус: выберите схему сопоставления VS2005 (вверху того же поля), так что теперь вы получаете F2 для Переименование членов, а не CTRL + R + R и F7 для Просмотр кода , а не CTRL + ALT + 0 .

Я считаю, что VS правильно понял по умолчанию. Я считаю чрезвычайно полезным, чтобы VS помнил, что я использовал в последний раз, и упрощает переключение, во многом как то, что делает сама ОС (на ALT + TAB ). Мой браузер делает то же самое по умолчанию (Opera), хотя я знаю, что Firefox ведет себя по-разному.

16 голосов
/ 02 апреля 2013

В Visual Studio 2012 или более поздней версии (2013, 2015, 2017 ...):

  1. Просмотр меню Инструменты / Параметры / Среда / Клавиатура.
  2. Поиск команды 'Window.NextTab', установите ярлык на Ctrl + Tab
  3. Поиск команды 'Window.PreviousTab', установите ярлык на Ctrl + Shift + Tab

enter image description here

8 голосов
/ 25 сентября 2009

Перейдите к сообщению в блоге Вкладка Visual Studio Макрос Unstupidifier и используйте макрос. После применения макроса к установке Visual Studio вы можете привязать к ним ваши любимые сочетания клавиш. Также обратите внимание на исправление реестра в комментариях, из-за которого не отображался всплывающий макрос, поскольку через некоторое время они могут стать раздражающими.

7 голосов
/ 04 августа 2010

После нескольких часов поиска я нашел решение, как переключаться между открытыми документами, используя CTRL + TAB , которые перемещаются слева направо и SHIFT + CTRL + TAB для перехода справа налево.

Короче говоря, вам нужно скопировать и вставить этот макрос:

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics

Public Module TabCtrl

Public Sub TabForward()
    Dim i As Integer
    Dim activateNext As Boolean = False

    For i = 1 To DTE.Windows.Count
        If DTE.Windows().Item(i).Kind = "Document" Then

            If activateNext Then
                DTE.Windows().Item(i).Activate()
                GoTo done
            End If

            If DTE.Windows().Item(i) Is DTE.ActiveWindow Then
                activateNext = True
            End If
        End If
    Next

    ' Was the last window... go back to the first
    If activateNext Then
        For i = 1 To DTE.Windows.Count
            If DTE.Windows().Item(i).Kind = "Document" Then
                DTE.Windows().Item(i).Activate()
                GoTo done
            End If
        Next
    End If
done:

End Sub

Public Sub TabBackward()
    Dim i As Integer
    Dim activateNext As Boolean = False

    For i = DTE.Windows.Count To 1 Step -1
        If DTE.Windows().Item(i).Kind = "Document" Then

            If activateNext Then
                DTE.Windows().Item(i).Activate()
                GoTo done
            End If

            If DTE.Windows().Item(i) Is DTE.ActiveWindow Then
                activateNext = True
            End If
        End If
    Next

    ' Was the first window... go back to the last
    If activateNext Then
        For i = DTE.Windows.Count To 1 Step -1
            If DTE.Windows().Item(i).Kind = "Document" Then
                DTE.Windows().Item(i).Activate()
                GoTo done
            End If
        Next
    End If
done:

End Sub

End Module

Макрос получен от: www.mrspeaker.net/2006/10/12/tab-un-stupidifier/

Если вы никогда не добавляете макрос в Visual Studio, есть очень полезная ссылка, как сделать это .

6 голосов
/ 22 июля 2015

Ctl + Alt + PgUp или PgDn сработали для переключения следующей / предыдущей вкладки из коробки для меня .. .

6 голосов
/ 12 мая 2009

Философия порядка вкладок в Visual Studio очень противоречива, поскольку порядок отображаемых вкладок отличается от логики переключения вкладок, что делает упорядочивание вкладок совершенно бесполезным .

Таким образом, пока не будет найдено лучшее решение, измените расположение окон (в Окружение-> Общее) с документов с вкладками на несколько документов; это не изменит поведение, но уменьшит путаницу, вызванную вкладками.

Таким образом, вы также найдете DocumentWindowNav более полезным!

5 голосов
/ 21 июня 2009

Я на 100% согласен с Джеффом.

Я работал над Borland C ++ Builder в течение нескольких лет, и одна из функций, которые мне больше всего не хватает, - это «правильный» порядок вставки документов с помощью Ctrl - Tab . Как сказал Джефф, « текущее поведение вкладок выводит меня из задачи и заставляет меня обращать внимание на инструмент » - именно это я и чувствую по этому поводу, и я очень удивлен тот факт, что не так много людей жалуются на это.

Я думаю, Ctrl - F6 - NextDocumentWindowNav - перемещает документы на основе времени последнего активирования документа. Такое поведение во многом напоминает поведение MDI-приложений в прежние времена.

Учитывая это, я обычно использую Ctrl + F6 для переключения между 2 документами (что очень удобно при переключении между файлами .cpp и .h при работе с проект c ++), даже если в настоящее время открыто более 2 документов. Например, если у вас открыто 10 документов (Tab1, Tab2, Tab3, ...., Tab10), я нажимаю Tab1, а затем Tab2. Когда я нажму Ctrl + F6 и отпущу клавиши, я перейду к Tab1. Повторное нажатие Ctrl + F6 вернет меня на вкладку Tab2.

5 голосов
/ 31 августа 2008

Полагаю, вы хотите, чтобы VSS называл Next (Previous) DocumentWindow. По умолчанию он установлен на Ctrl (-Shift) -F6 на моем VSS 8. На Ctrl (-Shift) -Tab они имеют Next(Previous)DocumentWindowNav. Вы можете изменить назначения клавиш через Инструменты / Параметры / Клавиатура.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...