Visual Studio'da belgeler arasında hareket etmek için Ctrl + Sekme davranışını değiştirme


286

Visual Studio'da Ctrl+ Tabve Shift+ Ctrl+ Tabçalışma şeklini değiştirmek mümkün müdür ? Yalnızca sekme denetimindeki öğeler arasında geçiş yapmak istediğim için açılır pencere gezgin penceresini devre dışı bıraktım. Benim sorunum, bir sonraki ve bir önceki belgeye geçiş yapmanın tutarsızlığı.

Açık belge için bir sekme denetimi kullanan diğer bütün programım kullanımlar gördük Ctrl+ Tabsoldan sağa hareket etmeye ve Shift+ Ctrl+ Tabsağa sola gitmek için. Visual Studio, seçilen son sekmeye atlamasıyla bunu keser. Hangi belgeyle sonuçlanacağınızı asla bilemezsiniz ve bu asla iki kez aynı değildir.

Çok mantıksız. Bu, herkesi aynı anda yalnızca iki belgenin açık olmasını teşvik etmenin ince bir yolu mu?


Diyelim ki birkaç dosyam var. Birinde çalışıyorum ve sağdaki bir sonraki sekmede ne olduğunu görmem gerekiyor. Dünyanın yüzündeki diğer her uygulamada Ctrl+ Tabbeni oraya götürecek. Ancak Visual Studio'da diğer sekmelerden hangisinin beni alacağına dair hiçbir fikrim yok. Açık olan iki belgem varsa, bu harika olur. Üç veya daha fazlasına gider gitmez, Visual Studio'nun sizi hangi sekmeye göndermeye karar verdiğine dair tüm bahisler kapalıdır.

Buradaki sorun, aracı düşünmem gerekmemesi, arka plana kayması ve görevi düşünmemiz. Geçerli sekme davranışı beni görevden çıkarmaya devam ediyor ve araca dikkat etmem gerekiyor.


4
"Pop-up navigasyon penceresini devre dışı bıraktım" ... Sinir bozucu seçme penceresi açılır penceresini nasıl kapattınız? Ctrl + Tab tuşlarına her basışımda titriyor.
demoncodemonkey

31
Ah, Araçlar-> Seçenekler-> Klavye'de Ctrl + Tab penceresini Window.NextDocumentWindowNav'dan Window.NextDocumentWindow'a ("Nav" kaldırıldı) yeniden eşleştirdim. Aynı şey, Window.PreviousDocumentWindowNav ile Ctrl + Shift + Tab için de geçerlidir.
demoncodemonkey

11
Bu davranışı sevmem yanlış mı, tıpkı alt-tab gibi mi?
Theo Belaire

3
Visual Studio, "en son kullanılan" (MRU) davranışını kullanarak sekmeler arasında geziniyor gibi görünüyor. Notepad ++ bu davranışı etkinleştirmek / devre dışı bırakmak için bir seçenek sunar (bu yüzden bazı insanlar böyle görünüyor). Yine de düzenli / sezgisel davranışa geçebilmek istiyorum.
André Caron

4
Dürüst olmak gerekirse, bir program görsel sekme sırasına göre dolaştığında hoşlanmıyorum. Visual studio'nun davranışına katılıyorum. Her ctrl + sekmesi için, en son kullanılana, ardından bundan önce son kullanılana geri döner. Desen çok uzun zamandır orada (VB6 ya da düşünmeden önce). Yani, tercih ettiğiniz deseni kullanın, ancak nasıl çalıştığını biliyorsanız, takdir etmek daha kolay :)
Josh Robinson

Yanıtlar:


227

Visual Studio 2015'te (VS'nin önceki sürümlerinin yanı sıra) VS'nin VS2013 veya daha düşük bir sürümünü kullanıyorsanız Productivity Power Tools'u ), Visual Studio'da iki yeni komut vardır:

Window.NextTab ve Window.PreviousTab

Sadece onları yeniden eşleştirmek go Ctrl+ Alt+ PageUp/ Ctrl+ Alt+ PageDowniçin Ctrl+Tab / Ctrl+' yaShift + Tabiçinde:

Menü Araçları -> Seçenekler -> Çevre -> Klavye

Not: Bu tür Visual Studio 2010 gibi önceki sürümlerinde, Window.NextTab ve Window.PreviousTab seçildiler Window.NextDocumentWellTab ve Window.PreviousDocumentWellTab .


1
Visual studio 2010 için en iyi yanıt bu. Bu çok yardımcı oldu. Kabul edilen makro çözüm bundan daha düşüktür.
jmq

2
Visual Studio 2012
Colonel Panic

4
Visual Studio Express'i de kullanırsanız bu yardımcı olmaz
BornToCode

18
Visual Studio 2012 ile komut adları biraz değişti. Şimdi Window.NextTab ve Window.PreviousTab .
JP ten Berge

3
@JP ten Berge - Bunu VS 2012'de test ettim ve bir Jilet görünümünde (.cshtml dosyası) iseniz Window.PreviousTab kısayolu (Ctrl + Alt + PgUp) çalışmaz. Çok sinir bozucu, ancak Ctrl + Alt + PgDown hala çalışıyor, bu yüzden tamamen sıkışmış değilsiniz. Ayrıca, sekmeleri garip bir sırayla çeviriyor gibi görünse de Window.NextDocumentWindow (Ctrl + F6) var.
DGreen

70

Visual Studio 2010'da yerleşik olarak, bunu çözmenin bir yolu vardır.

Varsayılan olarak, Ctrl+ Tabve Ctrl+ + Shifttuşlarına Tabatanır Window.[Previous/Next]..Document, ancak

Tools -> Options -> Environment -> Keyboard,

bu tuş atamalarını kaldırın Window.[Next/Previous]Tabve istediğiniz davranışı eklemek için yeniden atayın .


5
Görünüşe göre birisi bir aşağı oyun arkasındaki mantığı karıştırdı- Bir cevap soruya uymuyorsa veya gerçekten olumsuzsa, bunu hak ediyor ... Ama benimki soruyu doğru cevaplıyor, cevabınızdan daha az da olsa. Sadece benimkilerden insanların "İşte bu komut dosyasını çalıştır" veya "Bu eklentiyi yükle!"
Zoey

1
Kullanıcılar belge sekmeleri arasında geçiş yapmak istiyor olabilir. 'Window. [Next / Previuos] Sekmesi', VS2010'da benim için belge sekmelerini etkilemezken @thepaulpage'in çözümü etkiledi. Net ve addon içermeyen yaklaşım için +1!
GnomeDePlume

⁺¹, ayrıca birisinin neden cevabınızı aşağıdan indirebileceğini düşündüm: Visual Studio 2010'un «Klavye» seçeneği olmayan garip bir sürümü vardı. Muhtemelen bu versiyona sahipti, seçeneklere baktı ve cevabın yanlış bakış açısına göre karar verdi, çünkü öznel bakış açıları gerçekten de öyle.
Hi-Angel

1
Window.[Previous|Next]DocumentWindow(VS2015) bu çalışmak için ayarından bağlayıcı kaldırmak zorunda kaldı . Varsayılan olarak, öncelikli görünen ayrı bir metin düzenleyicisi bağlaması vardı.
Kat

51

en azından VS 2012'de değiştirilebilir (Bence 2010 için de çalışması gerekir).

1) TOOLS > Options > Environment > Keyboard

(Evet ARAÇLAR, VS2012!) Şimdi kontrol etmek için üç kısayol.

2) Window.NextDocumentWindow- üst taraftaki arama bölmesini yazarak oraya hızlı bir şekilde ulaşabilirsiniz. Şimdi bu senin düşmanın . Hoşunuza gitmiyorsa çıkarın. Kendinize sahip olmak istiyorsanız, başka bir şeyle değiştirin (ve Ata düğmesini unutmayın ), ancak sonunda ne olursa olsun bu kısayolu unutmayın . Daha sonra kullanışlı olacaktır.

(Bu, son sekmenizi hatırlayan kısayol)

resim açıklamasını buraya girin

3) Şimdi arayın Window.NextDocumentWindowNav- bu yukarıdakiyle aynıdır, ancak açılan sekmelerin bir önizlemesini gösterir (bu pop-up ile diğer pencerelere çok hızlı gidebilirsiniz). Asla bu yararlı buldum. 2. adımda belirtilenlerin hepsini yapın ( hatırlamayı unutmayın ).

4) Window.NextTab- sihirli iksiriniz. Bu sekmeler arasında ileri sırayla dolaşmanıza izin verir. İsteyebilir misin CTRL+ TAB? Yine 2. adımı ve hatırlayın .

5) Şimdi imleci Basın kısayol tuşlarına: metin kutusuna getirin (şu anda ne seçildiği önemli değil, bu zamanı atamayacaksınız ) ve üç (veya iki veya bir) kısayolun ilkini yazın.

resim açıklamasını buraya girin

Şu anda tarafından kullanılan Kısayol'u göreceksiniz : listelendiğini . Kısayol için yinelenen bir giriş olmadığından emin olun. Resimde, yinelenen giriş yok. Eğer (nadir) varsa, X deyin, sonra X'e gidin ve kısayolu kaldırın. Bu adımı diğer kısayollar için de tekrarlayın.

6) Şimdi Previouskısayollar için 1-5'i tekrarlayın (tercihen ekleme Shift).

7) Bonus: Aynı kutusunun üst) en Seç VS2005 haritalama şeması (, şimdi olsun F2için isim ver üyeleri değil CTRL+ R+ Rve F7için Görünüm Kanunu ve CTRL+ ALT+ 0.

Ben VS varsayılan olarak doğru var sanırım. VS'nin en son ne kullandığımı hatırlaması ve işletim sisteminin kendisi gibi (on ALT+ TAB) yaptığı gibi anahtarlamayı daha kolay hale getirmesi son derece yararlı buluyorum . Firefox'un farklı davrandığını biliyorum, ancak tarayıcım varsayılan olarak da aynı şeyi yapıyor (Opera).


Bu davranışı karşı-karşı-sezgisel de bulamıyorum. ;-)
dotNET

bu cevabın tepesindeki görüş beni her zaman bilgilendirici ve (büyük boyut nedeniyle) gereksiz yere düşmanca olarak rahatsız etti.
thepaulpage

@thepaulpage Cevabımı güncelledim. Bir görüş bildirmemizin nedeni, birçok kullanıcının (OP dahil) bunun karşı sezgisel olduğu görüşünü vermiş olmasıdır.
nawfal

16

Visual Studio 2012 veya sonraki sürümlerde (2013, 2015, 2017 ...):

  1. Araçlar / Seçenekler / Çevre / Klavye menüsüne göz atın.
  2. 'Window.NextTab' komutunu arayın, kısayolu Ctrl+ olarak ayarlayınTab
  3. 'Window.PreviousTab' komutunu arayın, kısayolu Ctrl+ Shift+ olarak ayarlayınTab

resim açıklamasını buraya girin


4
Başvuru için, varsayılan olarak, Ctrl + Tab ve Ctrl + Shift + Tab 'Window.NextDocumentWindowNav' ve 'Window.PreviousDocumentWindowNav' komutlarıyla eşlenir.
Rory O'Kane

8

Blog yazısı Visual Studio Sekmesi Aptallaştırıcı Olmayan Makro'ya gidin ve makroyu kullanın. Makroyu Visual Studio yüklemenize uyguladıktan sonra, sık kullandığınız klavye kısayollarını bunlara bağlayabilirsiniz. Ayrıca, bir süre sonra sinir bozucu olabileceğinden, yorumlarda makro balonu görüntülemediği için kayıt defteri düzeltmesine dikkat edin.


Görünüşe göre hala bazı koşullar altında kırılıyor, ancak bu aslında istendiği gibi çalışacak en clost.
Jeff Cuscutis

VS 2010'da, Ctrl + Tab ve Ctrl + Shift + Tab öğelerini metin belgeleri arasında geçiş yapacak şekilde yapılandırabilirsiniz, ancak tasarımcı sekmeleri veya BinaryEditor ile çalışmaz. Yukarıdaki blog yazısından gelen makro, belge penceresi türlerinin çoğuyla çalışan tek yöntemdir. Ben de daha fazla ayrıntı ( goo.gl/K9rz ) olan Microsoft ile bir hata dosyaladım ve onlar değişecek Window.NextTabve Window.PreviousTab"sonraki Visual Studio sürümü" belgeler için MRU olmayan geçiş sağlamak için dediler .
Greg Bray

7

Birkaç saatlik aramadan sonra CTRL+ TABsoldan sağa hareket eden + ve sağdan sola gitmek için SHIFT+ CTRL+ tuşlarını kullanarak açık belgeler arasında nasıl geçiş yapılacağına dair bir çözüm buldum TAB.

Kısacası bu makroyu kopyalayıp yapıştırmanız gerekiyor:

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 şu adresten gelir: www.mrspeaker.net/2006/10/12/tab-un-stupidifier/

Visual Studio'ya hiçbir zaman makro eklemezseniz, bunu yapacağınız .


2
Bunu ilk kez yapmak hala 10 saniye sürüyor ve her kullandığınızda bir sistem tepsisi simgesi yanıp sönüyor mu? VS2005 bunu yaptı ve ben alamadım ...
Roman Starkov

1
Romkyns: Evet, korkuyorum. Hala uygulanabilir bir çözüm değil.
David Foster

1
Romkyns: evet, makroyu her çalıştırdığımda, sistem tepsisinde makronun çalıştığını gösteren bir balon açılır. bu balondan kurtulmak için Windows Kayıt Defterini düzenleyebilir ve şu DWORD değerini ekleyebilirsiniz: "DontShowMacrosBalloon" = 1, bu anahtarda: HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 9.0 (Visual Studio 2008 için 9.0 kullanın; 2005 için 8.0 kullanın) . Balon kaybolur, ancak sistem tepsisi simgesi görünmeye devam eder. Benim için bu çözüm daha iyi bulamadım ve orjinalne ctrl + tab davranışından nefret ediyorum.
user410261

6

Görüntülenen sekmelerin sırası sekme değiştirme mantığından farklı olduğundan, sekmelerin sırasını tamamen işe yaramaz hale getirdiği için Visual Studio sekme sırasının felsefesi çok mantıksızdır. .

Böylece daha iyi bir çözüm ortaya çıkıncaya kadar, pencere düzenini (Ortam-> Genel'de) sekmeli belgelerden çoklu belgelere değiştirin; davranışı değiştirmez, ancak sekmelerin neden olduğu karışıklığı azaltır.

Bu şekilde DocumentWindowNav'ı daha kullanışlı bulacaksınız!


6

Ctl+ Alt+ PgUpveya PgDnkısayollar sonraki / önceki sekmeyi benim için kutudan çıkarmak için çalıştı ...


3
Mantıksız olan şey: Sekmeler çubuğunuzda n Sekmeler için yalnızca yatay alan varsa, bu kısayollar şu anda görünmeyen sekmeler için sekme döngüsünü yapmaz!
sergiol

5

Jeff ile hemfikirim% 100.

Borland C ++ Builder'da birkaç yıl çalıştım ve en çok özlediğim özelliklerden biri 'doğru' belge sekme sırası Ctrl- Tab. Jeff'in dediği gibi, " Şu anki sekme davranışı beni görevden çıkarmaya devam ediyor ve araca dikkat etmem gerekiyor " tam olarak bu konuda hissettirdiğim şey değil. birçok insan bu konuda şikayetçi.

Bence Ctrl-F6 - NextDocumentWindowNav - belgenin belgenin son etkinleştirildiği zamana göre gezinir. Bu davranış, MDI uygulamalarının eskiden nasıl davrandığına çok benzer.

Bu hesaba bu alındığı, ben genellikle kullanmak Ctrl+ F62'den fazla açılmış durumdaki belgeler bulunduğunda bile (c ++ proje üzerinde çalışırken .cpp ve .h dosyalar arasında geçiş oldukça kullanışlıdır) 2 belgeler arasında geçiş yapmak için. Örneğin, açık 10 belgeniz varsa (Tab1, Tab2, Tab3, ...., Tab10), Tab1'e ve sonra Tab2'ye tıklıyorum. Ben ne zaman Ctrl+ F6ve serbest bırakma tuşları, ben Sekme1'e atlarsınız. Ctrl+ F6Düğmesine tekrar basmak beni Tab2'ye geri götürür.


5

Sanırım VSS'nin ne istediğini istiyorsun Sonraki (Önceki) DocumentWindow. Varsayılan olarak, başlıyoruz Ctrl(-Shift)-F6On my VSS 8. Ctrl(-Shift)-Tabsahip oldukları Next(Previous)DocumentWindowNav. Tuş atamalarını Araçlar / Seçenekler / Klavye ile değiştirebilirsiniz.


3
Ctrl- (Shift-) F6 sizi sol veya sağ sekmeye götürmez. Ctrl-Tab ile aynı sırada ama sinir bozucu pencere olmadan.
22'de shoosh

1
Doğru ... Visual Studio 2010, MRU tabanlı olmayan belge değiştirmeyi yapan ancak tüm belge türleriyle çalışmayan Window.NextTab ve Window.PreviousTab'a sahiptir: connect.microsoft.com/VisualStudio/feedback/details/571750/…
Greg Bray

4

Kayıt defteri dalında: HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 9.0 1 değeriyle "UseMRUDocOrdering" adlı DWORD ekleyin. En son kullanılan belgelerin sola yerleştirilmesini isteyecektir. Mükemmel değil, varsayılan hatalı davranıştan daha iyi.


0

@ J-Bob'un @ thepaulpage'in cevabı altındaki yorumuna göre (vurgu eklendi) VS 2017+ ile güncellendi :

Görünüşe göre komutlar tekrar değişti. Şimdi 2017 ve klavye kısayollarına Sonraki Editörü ve Önceki Editörü Aç denir . Bunun için herhangi bir uzantıya ihtiyacınız yok.

Sol alt kısımdaki dişli çark simgesinden veya [Ctrl]+,komutla erişilebilen Ayarlar altında seçenekleri bulabilirsiniz .


-5

Visual Studio kullanmıyorum ( evet, gerçekten kullanmıyorum ), ancak AutoHotkey herhangi bir kısayol tuşunu global olarak veya belirli bir uygulamada yeniden eşleyebilir:

#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

Bunlar benim ana AutoHotKey betiğimin iki yeniden kaldırması. Bu tür görevler için mükemmel bir araç olduğunu düşünüyorum.


3
Maalesef ama sorun olmasıdır hiçbir bu yardım olmaz çok doğru şeyi yapar anahtar.
Roman Starkov
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.