Zmiana zachowania Ctrl + Tab przy przemieszczaniu się między dokumentami w Visual Studio

Czy można zmienić sposób Ctrl + Tab i Shift + Ctrl + Tab Praca w Visual Studio? Wyłączyłem wyskakujące okno Nawigatora, ponieważ chcę przełączać się tylko między elementami w kontrolce tab. Moim problemem jest niespójność tego, co robi przejście na następny i poprzedni dokument.

Każdy inny program, który używa kontrolki tab dla otwartego dokumentu, który widziałem, używa Ctrl + Tab aby przejść od lewej do prawej i Shift + Ctrl + Tab , aby przejść od prawej do lewej. Visual Studio przerywa to skokiem do ostatniej wybranej karty. Nigdy nie wiadomo, na jakim dokumencie wylądujesz, i nigdy nie jest tak samo dwa razy.

Jest to bardzo sprzeczne z intuicją. Czy jest to subtelny sposób, aby zachęcić wszystkich do otwarcia tylko dwóch dokumentów jednocześnie?


Powiedzmy, że mam otwarte kilka plików. Pracuję w jednym i muszę zobaczyć, co jest w następnej zakładce po prawej stronie. W każdym inne pojedyncze aplikacje na powierzchni Ziemi, Ctrl + Tab mnie tam zaprowadzi. Ale w Visual Studio nie mam pojęcia do której z pozostałych zakładek mnie zaprowadzi. Jeśli mam otwarte tylko dwa dokumenty, to działa świetnie. Jak tylko przejdziesz do trzech lub więcej, wszystkie zakłady są wyłączone, do której zakładki Visual Studio postanowiło Cię wysłać.

Problem polega na tym, że nie powinienem myśleć o narzędziu, powinno zniknąć w tle i powinienem myśleć o zadaniu. Bieżące zachowanie zakładki ciągnie mnie z zadania i sprawia, że muszę zwracać uwagę na narzędzie.

Author: Peter Mortensen, 2008-08-22

12 answers

W Visual Studio 2015 (podobnie jak poprzednie wersje VS, ale musisz zainstalowaćProductivity Power Tools Jeśli używasz VS2013 lub poniżej), w Visual Studio są dwa nowe polecenia:

okno.NextTab oraz okno.PreviousTab

Wystarczy przerobić je z Ctrl+Alt+PageUp/Ctrl+Alt+PageDown do Ctrl+Zakładka/Ctrl+Shift+Tab in:

Menu Narzędzia -> Opcje -> Środowisko -> Klawiatura

Uwaga: we wcześniejszych wersjach, takich jak Visual Studio 2010, Window.NextTab i Window.Poprzednie zostały nazwane Window.NextDocumentWellTab oraz okno.PreviousDocumentWellTab .

 191
Author: thepaulpage,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-07 19:52:29

Visual Studio 2010 ma wbudowany sposób na rozwiązanie tego problemu.

Domyślnie, Ctrl+Tab i Ctrl+Shift+Tab są przypisane do Window.[Previous/Next]..Document, ale można, poprzez

Tools -> Options -> Environment -> Keyboard,

Usuń te kluczowe przydziały i przypisz je do Window.[Next/Previous]Tab, aby dodać pożądane zachowanie.

 66
Author: Zoey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-16 02:30:55

Można to zmienić, przynajmniej w VS 2012 (myślę, że na 2010 też powinno działać).

1) TOOLS > Options > Environment > Keyboard

(Yes TOOLS, its VS2012 !) Teraz trzy skróty do sprawdzenia.

2) Window.NextDocumentWindow - Możesz tam szybko dotrzeć, wpisując w okienku wyszukiwania na górze. Teraz to jest Twój wróg. Usuń go, jeśli ci się nie podoba. Zmień go na coś innego (i nie zapomnij przypisać przycisk) jeśli chcesz mieć swój własny, ale pamiętaj, że skrót cokolwiek to jest na końcu . Przyda się później.

(chodzi mi o to, że jest to skrót, który zapamiętuje ostatnią kartę)

Tutaj wpisz opis obrazka

3) Teraz poszukaj Window.NextDocumentWindowNav - jest to to samo co powyżej, ale pokazuje podgląd otwartych kart(możesz zbyt szybko przejść do innych okien za pomocą tego wyskakującego okienka). Ale to nigdy mi nie pomogło. Wykonaj wszystko, o czym mowa w Kroku 2 (nie zapomnij zapamiętać ).

4) Window.NextTab - twoja magiczna mikstura. To pozwoli Ci przełączać karty w kolejności przekazywania. May be you want CTRL+TAB ? Ponownie Krok 2 i zapamiętaj .

5) Teraz umieść kursor w naciśnij klawisze skrótów: textbox (nie ma znaczenia, co jest aktualnie zaznaczone, tym razem nie będziesz przypisywać) i wpisz pierwszy z trzech (lub dwóch lub jednego) skrótów.

Tutaj wpisz opis obrazka

Zobaczysz Skrót aktualnie używany przez: na liście. Upewnij się, że nie masz zduplikowanego wpisu dla skrótu. Na zdjęciu nie ma duplikatów wpisów. Jeśli masz (rzadkość), powiedz X, a następnie przejdź do X i Usuń skrót. Powtórz ten krok również dla innych skrótów.

6) teraz powtórz 1-5 również dla Previous skrótów (najlepiej dodając Shift ).

7) Bonus: Wybierz schemat mapowania VS2005( u góry tego samego pola), więc teraz otrzymujesz F2 dla Zmień nazwę członków, a nie CTRL+R+R i F7 dla Zobacz kod i nie CTRL+ALT+0.

jestem zdania, że VS ma rację domyślnie. Uważam, że bardzo przydatne jest to, że VS zapamiętuje to, czego używałem Ostatnio i ułatwia przełączanie, podobnie jak sam system operacyjny (na ALT+TAB ). Moja przeglądarka robi to samo domyślnie (Opera), choć wiem, że Firefox zachowuje się inaczej.

 47
Author: nawfal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-27 20:30:05

W Visual Studio 2012 lub nowszym (2013, 2015, 2017...):

  1. Przeglądaj menu Narzędzia / Opcje / środowisko / Klawiatura.
  2. wyszukaj okno polecenia.NextTab', Ustaw skrót na Ctrl+Tab
  3. wyszukaj okno polecenia.PreviousTab', Ustaw skrót na Ctrl+Shift+Tab

Tutaj wpisz opis obrazka

 13
Author: Colonel Panic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-10 10:10:39

Przejdź do wpisu na blogu Visual Studio Tab Un-makro i skorzystaj z makra. Po zastosowaniu makra do instalacji programu Visual Studio możesz powiązać z nimi ulubione skróty klawiaturowe. Zwróć również uwagę na poprawkę rejestru w komentarzach, aby nie wyświetlać balonu makro, ponieważ mogą one denerwować po pewnym czasie.

 8
Author: user178908,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-23 12:15:23

Po kilku godzinach poszukiwań znalazłem rozwiązanie, jak przełączać się między otwartymi dokumentami za pomocą CTRL+TAB które przesuwają się z lewej do prawej i SHIFT+ CTRL+ TAB , aby przejść od prawej do lewej.

W skrócie musisz skopiować i wkleić to makro:

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

Makro pochodzi z: www.mrspeaker.net/2006/10/12/tab-un-stupidifier /

Jeśli nigdy nie dodasz makra do Visual Studio jest bardzo przydatny link jak zrobić it .

 7
Author: user410261,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-28 15:13:38

Filozofia kolejności kart w Visual Studio jest bardzo sprzeczna z intuicją, ponieważ kolejność wyświetlanych kart różni się od logiki przełączania kart, co sprawia, że kolejność kart jest całkowicie bezużyteczna.

Dopóki nie pojawi się lepsze rozwiązanie, Zmień układ okna (w środowisku- > ogólne) z dokumentów z kartami na dokumenty wielokrotne; nie zmieni to zachowania, ale zmniejszy zamieszanie spowodowane przez karty.

W ten sposób znajdziesz również DocumentWindowNav bardziej przydatne!

 6
Author: Peter Mortensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-22 17:50:11

Zgadzam się w 100% z Jeffem.

Pracowałem nad Borlandem C++ Builderem od kilku lat i jedną z cech, których najbardziej mi brakuje, jest "poprawna" kolejność zakładek dokumentu za pomocą Ctrl-Tab . Jak powiedział Jeff, "obecne zachowanie zakładki ciągle wyciąga mnie z zadania i sprawia, że muszę zwracać uwagę na narzędzie " jest dokładnie tym, co o tym myślę i jestem bardzo zaskoczony faktem, że nie ma wielu osób narzekających na to.

Myślę Ctrl-F6 - NextDocumentWindowNav-przegląda dokumenty na podstawie czasu ostatniej aktywacji dokumentu. To zachowanie jest podobne do tego, jak aplikacje MDI zachowywały się w dawnych czasach.

Biorąc to pod uwagę, zwykle używam Ctrl+F6 do przełączania między dwoma dokumentami (co jest bardzo przydatne w przełączaniu między .cpp i .pliki h podczas pracy nad projektem c++) nawet wtedy, gdy jest więcej niż 2 obecnie otwarte dokumenty. Na przykład, jeśli masz 10 otwarte dokumenty (Tab1, Tab2, Tab3,...., Tab10), klikam na Tab1 a następnie Tab2. Kiedy robię Ctrl+F6 i zwolnij klawisze, przeskoczę do Tab1. Naciśnięcie Ctrl+F6 znowu zabierze mnie do Tab2.

 5
Author: Kei,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-27 04:48:25

Myślę, że chcesz, co VSS wywołuje Następny (Poprzedni)DocumentWindow. Domyślnie, to jest na Ctrl (- Shift) - F6 na moim VSS 8. Na Ctrl (- Shift) - Tab mają Next(Previous)DocumentWindowNav. Możesz zmieniać przypisania klawiszy za pomocą narzędzi/opcji / klawiatury.

 5
Author: buti-oxa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-07 14:50:35

W oddziale rejestru: HKEY_CURRENT_USER\Software \ Microsoft\VisualStudio\9.0 dodaj DWORD o nazwie "UseMRUDocOrdering" z wartością 1. Będzie zamawiać dokumenty, więc ostatnio używane są umieszczane po lewej stronie. Nie jest idealny, ale lepszy od domyślnego niewłaściwego zachowania.

 4
Author: riffraff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-03 07:57:33

Ctl + Alt + PgUp lub PgDn skróty działały, aby przełączyć kartę next/prev z pudełka dla mnie...

 4
Author: FlashJordan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-22 04:25:02

Nie używam Visual Studio ( tak, naprawdę, nie używam go ), ale AutoHotkey może zremapować dowolny hotkey globalnie lub w konkretnej aplikacji:

#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

Są to dwa remapingi mojego głównego skryptu AutoHotKey. Myślę, że jest to doskonałe narzędzie do tego typu zadań.

 -5
Author: PabloG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-22 17:49:15