Изменение поведения Ctrl + Tab для перемещения между документами в Visual Studio

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

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

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


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

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

21.08.2008 20:07:59
«Я отключил всплывающее окно навигатора» ... Как вы отключили раздражающее всплывающее окно выбора? Это так раздражает просто мерцать каждый раз, когда я нажимаю Ctrl + Tab.
demoncodemonkey 1.07.2009 21:33:37
Ну вот, в Сервис-> Параметры-> Клавиатура я переназначил Ctrl + Tab из Window.NextDocumentWindowNav в Window.NextDocumentWindow (удалил "Nav"). И то же самое с Ctrl + Shift + Tab с Window.PreviousDocumentWindowNav.
demoncodemonkey 2.07.2009 09:35:38
Это неправильно, что мне нравится такое поведение, так как оно похоже на alt-tab?
Theo Belaire 30.08.2011 14:42:42
Visual Studio, по-видимому, перемещается по вкладкам с использованием поведения «последний использованный» (MRU). Notepad ++ предлагает возможность включить / отключить это поведение (так что некоторым это нравится). Я действительно хотел бы иметь возможность переключиться на обычное / интуитивное поведение.
André Caron 25.09.2012 19:45:43
Честно говоря, мне не нравится, когда программа циклически проходит в порядке визуальных вкладок. Я согласен с поведением Visual Studio. Для каждой вкладки ctrl + она возвращается к последней использованной, а затем к последней использованной перед этим. Шаблон был там очень давно (VB6 или прежде чем я думаю). Я имею в виду, используйте шаблон, который вы предпочитаете, но если вы знаете, как он работает, это легче оценить :)
Josh Robinson 1.03.2016 15:24:39
12 ОТВЕТОВ
РЕШЕНИЕ

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

Window.NextTab и Window.PreviousTab

Просто переназначить их из Ctrl+ Alt+ PageUp/ Ctrl+ Alt+ PageDownв Ctrl+ Tab/ Ctrl+ Shift+ Tabв:

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

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

226
7.07.2016 19:52:29
Это лучший ответ для Visual Studio 2010. Это было очень полезно. Принятое макрорешение уступает этому.
jmq 1.03.2011 21:19:49
Пока нет версии для Visual Studio 2012
Colonel Panic 7.08.2012 09:38:55
Это также не поможет, если вы используете Visual Studio Express
BornToCode 22.08.2012 19:54:37
В Visual Studio 2012 имена команд изменились незначительно. Теперь это Window.NextTab и Window.PreviousTab .
J.P. ten Berge 22.01.2013 10:01:12
@JP ten Berge - я протестировал это в VS 2012, и ярлык Window.PreviousTab (Ctrl + Alt + PgUp) не работает, если вы находитесь в режиме Razor (файл .cshtml). Очень раздражает, хотя Ctrl + Alt + PgDown все еще работает, так что вы не совсем застряли. Есть также Window.NextDocumentWindow (Ctrl + F6), хотя это, кажется, переключает вкладки в странном порядке.
DGreen 30.04.2013 13:49:08

Я не использую Visual Studio ( да, действительно, я не использую его ), но AutoHotkey может переназначить любую горячую клавишу глобально или в конкретном приложении:

#IfWinActive Microsoft Excel (application specific remapping)

; Printing area in Excel (@ Ctrl+Alt+A)
^!a::
Send !ade
return

#IfWinActive


$f4::
; Closes the active window (make double tapping F4 works like ALT+F4)
if f4_cnt > 0 
{
    f4_cnt += 1
    return
}

f4_cnt = 1
SetTimer, f4_Handler, 250
return

f4_Handler:
SetTimer, f4_Handler, off

if (f4_cnt >= 2)    ; Pressed more than two times
{   
    SendInput !{f4}
} else {
    ; Resend f4 to the application
    Send {f4}
}

f4_cnt = 0
return

Это две переназначения моего основного скрипта AutoHotKey. Я думаю, что это отличный инструмент для этого типа задач.

-5
22.01.2014 17:49:15
Извините, но проблема в том, что нет ключа, который делает правильные вещи, так что это не поможет.
Roman Starkov 4.11.2010 21:52:50

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

5
7.09.2015 14:50:35
Ctrl- (Shift-) F6 не приводит вас к левой или правой вкладке. В том же порядке, что и Ctrl-Tab, но без раздражающего окна.
shoosh 16.07.2009 22:03:09
Правильно ... В Visual Studio 2010 есть Window.NextTab и Window.PreviousTab, которые изменяют документы не на основе MRU, но не работают со всеми типами документов: connect.microsoft.com/VisualStudio/feedback/details/571750/…
Greg Bray 31.07.2010 19:16:25

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

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

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

6
22.01.2014 17:50:11

Я на 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
27.07.2013 04:48:25

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

8
23.01.2014 12:15:23
По-видимому, он все еще ломается при некоторых условиях, но это самый близкий к действительной работе, как хотелось бы.
Jeff Cuscutis 25.09.2009 18:34:40
В VS 2010 вы можете настроить Ctrl + Tab и Ctrl + Shift + Tab для переключения между текстовыми документами, но он не работает с вкладками дизайнера или BinaryEditor. Макрос из вышеупомянутого сообщения в блоге - единственный метод, который работает с большинством типов окон документа. Я также подал в Microsoft сообщение об ошибке, которая содержит более подробную информацию ( goo.gl/K9rz ), и они сказали, что они изменятся Window.NextTabи Window.PreviousTabобеспечат переключение не-MRU для документов в «следующей версии Visual Studio».
Greg Bray 21.07.2010 16:24:11

После нескольких часов поиска я нашел решение, как переключаться между открытыми документами, используя 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, есть очень полезная ссылка, как это сделать .

7
28.09.2017 15:13:38
Требуется ли еще 10 секунд, чтобы сделать это в первый раз, и мигать значок в системном трее каждый раз, когда вы используете его? Это то, что сделал VS2005, и я не смог принять это ...
Roman Starkov 4.08.2010 10:40:42
Ромкинс: Да, я боюсь. Все еще не жизнеспособное решение.
David Foster 5.08.2010 16:24:12
Ромкинс: да, это правда, каждый раз, когда я выполняю макрос, в системном трее появляется всплывающая подсказка, указывающая, что макрос работает. чтобы избавиться от этого баллона, вы можете отредактировать реестр Windows и добавить следующее значение DWORD: «DontShowMacrosBalloon» = 1 в этом ключе: HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 9.0 (используйте 9.0 для Visual Studio 2008; 8.0 для 2005) , Воздушный шар исчезнет, ​​но значок на панели задач все равно появится. Для меня это решение достаточно хорошее, я не нашел лучшего, и я ненавижу поведение orginalne ctrl + tab.
user410261 8.08.2010 22:01:32

В ветке реестра: HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 9.0 добавьте DWORD с именем «UseMRUDocOrdering» со значением 1. Он упорядочит документы, поэтому последние использованные объекты будут размещены слева. Это не идеально, но лучше, чем поведение по умолчанию.

4
3.08.2011 07:57:33

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

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

Tools -> Options -> Environment -> Keyboard,

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

69
16.09.2015 02:30:55
Видимо, кто-то запутал рассуждения, стоящие за отрицательным голосом - если ответ не соответствует вопросу или если он на самом деле отрицательный, он заслуживает одного ... Но мой ответ отвечает на вопрос правильно, хотя и не так, как ваш ответ. Это просто мое ожидание, что люди действительно поймут меню опций, а не «Вот, запустите этот скрипт» или «Установите это дополнение!» ... Разве это не сайт для программистов?
Zoey 2.04.2013 03:31:29
Возможно, люди пытались переключаться между вкладками документов. Редактирование 'Window. [Next / Previuos] Tab' не повлияло на вкладки документа для меня в VS2010, в то время как решение @thepaulpage помогло. +1 за ясный и свободный от аддонов подход!
GnomeDePlume 16.08.2013 09:45:47
Also также у меня возникла мысль, почему кто-то может понизить ваш ответ: в Visual Studio 2010 была какая-то странная версия, в которой не было опции «Клавиатура». Так что, вероятно, тот имел эту версию, посмотрел на варианты и решил, что ответ неправильный, поскольку с их субъективной точки зрения это действительно так.
Hi-Angel 10.10.2014 06:09:30
Я должен был удалить привязку из Window.[Previous|Next]DocumentWindowнастройки для этого, чтобы работать (в VS2015). По умолчанию для него существовала отдельная привязка текстового редактора, которая, казалось, имела приоритет.
Kat 11.09.2015 17:48:49

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

1) TOOLS > Options > Environment > Keyboard

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

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

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

введите описание изображения здесь

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

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

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

введите описание изображения здесь

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

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

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

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

51
27.09.2017 20:30:05
Я не считаю это поведение анти-не-интуитивным. ;-)
dotNET 22.06.2015 13:28:10
мнение в начале этого ответа всегда выдвигало меня как неинформативное и (из-за большого размера) излишне антагонистическое.
thepaulpage 14.06.2016 17:29:48
@ thepaulpage Я обновил свой ответ. Причина, по которой мне пришлось высказать свое мнение, заключается в том, что многие пользователи (включая OP) высказали свое мнение о том, что оно нелогично.
nawfal 15.06.2016 01:03:18

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

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

введите описание изображения здесь

16
10.08.2017 10:10:39
Для справки, по умолчанию Ctrl + Tab и Ctrl + Shift + Tab отображаются на команды Window.NextDocumentWindowNav и Window.PreviousDocumentWindowNav.
Rory O'Kane 22.05.2013 18:44:32

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

6
22.07.2015 04:25:02
Нелогичная вещь: если ваша панель вкладок имеет только горизонтальное пространство для n вкладок, эти ярлыки не заставят вкладки зацикливаться для вкладок, которые в данный момент не видны!
sergiol 23.06.2016 16:27:02