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

StackOverflow https://stackoverflow.com/questions/21027

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

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


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

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

Это было полезно?

Решение

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

Окно.NextTab иОкно.PreviousTab

Просто переназначьте их из Ctrl+Альтернативный вариант+PageUp/Ctrl+Альтернативный вариант+Листать вниз к Ctrl+Вкладка/Ctrl+Сдвиг+Вкладка в:

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

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

Другие советы

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

По умолчанию, Ctrl+Вкладка и Ctrl+Сдвиг+Вкладка назначены Window.[Previous/Next]..Document, но можно через

Tools -> Options -> Environment -> Keyboard,

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

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

1) TOOLS > Options > Environment > Keyboard

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

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

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

enter image description here

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

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

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

enter image description here

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

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

7) Бонус:Выберите схему сопоставления VS2005 (вверху того же поля), и теперь вы получите Ф2 для Переименовать члены и не CTRL+р+р, и F7 для Посмотреть код и не CTRL+АЛЬТ+0.

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

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

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

enter image description here

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

После пары часов поиска я нашел решение, как переключаться между открытыми документами с помощью CTRL+ВКЛАДКА которые движутся слева направо и СДВИГ+ CTRL+ ВКЛАДКА идти справа налево.

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

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, есть очень полезная ссылка, как это сделать. сделай это.

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

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

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

КТЛ + Альтернативный вариант + PgUp или ПГДн ярлыки работали для переключения следующей/предыдущей вкладки из коробки для меня...

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

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

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

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

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

В ветке реестра:Hkey_current_user Software Microsoft VisualStudio 9.0 Добавить DWORD с именем «USEMRUDOCORDERING» со значением 1.Он упорядочит документы так, чтобы последние использованные документы располагались слева.Это не идеально, но лучше, чем неправильное поведение по умолчанию.

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

#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.Я думаю, что это отличный инструмент для такого рода задач.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top