Mengubah perilaku Ctrl + Tab untuk berpindah antar dokumen di Visual Studio

286

Apakah mungkin mengubah cara Ctrl+ Tabdan Shift+ Ctrl+ Tabbekerja di Visual Studio? Saya telah menonaktifkan jendela navigator popup, karena saya hanya ingin beralih antar item dalam kontrol tab. Masalah saya adalah tidak konsistennya apa yang harus dilakukan dengan beralih ke dokumen berikutnya dan sebelumnya.

Setiap program lain yang menggunakan kontrol tab untuk dokumen terbuka yang saya lihat menggunakan Ctrl+ Tabuntuk berpindah dari kiri ke kanan dan Shift+ Ctrl+ Tabuntuk ke kanan ke kiri. Visual Studio memecah ini dengan lompatannya ke tab terakhir yang dipilih. Anda tidak akan pernah tahu pada dokumen apa Anda akan berakhir, dan itu tidak pernah sama seperti dua kali.

Ini sangat berlawanan dengan intuisi. Apakah ini cara halus untuk mendorong semua orang agar hanya membuka dua dokumen sekaligus?


Katakanlah saya punya beberapa file terbuka. Saya bekerja di satu, dan saya perlu melihat apa yang ada di tab sebelah kanan. Dalam setiap aplikasi tunggal lainnya di muka Bumi, Ctrl+ Tabakan membuat saya di sana. Tetapi di Visual Studio, saya tidak tahu tab mana yang akan saya bawa. Jika saya hanya memiliki dua dokumen terbuka, ini bekerja dengan baik. Segera setelah Anda masuk ke tiga atau lebih, semua taruhan dimatikan untuk apa tab Visual Studio telah memutuskan untuk mengirim Anda.

Masalah dengan ini adalah saya tidak harus memikirkan alatnya, itu harus menghilang ke latar belakang, dan saya harus memikirkan tugas itu. Perilaku tab saat ini terus menarik saya keluar dari tugas dan membuat saya harus memperhatikan alat ini.

Jeff Cuscutis
sumber
4
"Saya telah menonaktifkan jendela navigator popup" ... Bagaimana Anda mematikan popup window pilihan yang mengganggu? Sangat menjengkelkan hanya berkedip setiap kali saya menekan Ctrl + Tab.
demoncodemonkey
31
Ah mengerti, di Tools-> Options-> Keyboard saya memetakan kembali Ctrl + Tab dari Window.NextDocumentWindowNav ke Window.NextDocumentWindow (menghapus "Nav"). Dan sama dengan Ctrl + Shift + Tab dengan Window.PreviousDocumentWindowNav.
demoncodemonkey
11
Apakah salah bahwa saya menyukai perilaku ini, karena ini seperti alt-tab?
Theo Belaire
3
Visual Studio muncul untuk menavigasi melalui tab menggunakan perilaku "MRU" yang terakhir digunakan. Notepad ++ menawarkan opsi untuk mengaktifkan / menonaktifkan perilaku ini (sehingga tampaknya sebagian orang menyukainya). Saya benar-benar ingin dapat beralih ke perilaku biasa / intuitif.
André Caron
4
Jujur, saya tidak suka ketika sebuah program melalui urutan tab visual. Saya setuju dengan perilaku Visual studio. Untuk setiap tab ctrl +, kembali ke yang terakhir digunakan, lalu yang terakhir digunakan sebelumnya. Polanya telah ada di sana untuk waktu yang sangat lama (VB6 atau sebelum saya pikir). Maksud saya, gunakan pola yang Anda sukai, tetapi jika Anda tahu cara kerjanya, lebih mudah untuk menghargai :)
Josh Robinson

Jawaban:

227

Di Visual Studio 2015 (juga versi VS sebelumnya, tetapi Anda harus menginstal Alat Daya Produktivitas jika Anda menggunakan VS2013 atau di bawah), ada dua perintah baru di Visual Studio:

Window.NextTab dan Window.PreviousTab

Cukup remap dari Ctrl+ Alt+ PageUp/ Ctrl+ Alt+ PageDownhingga Ctrl+ Tab/ Ctrl+ Shift+ Tabdi:

Menu Tools -> Options -> Environment -> Keyboard

Catatan: Dalam versi sebelumnya seperti Visual Studio 2010, Window.NextTab dan Window.PreviousTab diberi nama Window.NextDocumentWellTab dan Window.PreviousDocumentWellTab .

Terima kasih
sumber
1
Ini adalah jawaban terbaik sekarang untuk visual studio 2010. Ini sangat membantu. Solusi makro yang diterima lebih rendah daripada yang ini.
jmq
2
Belum ada versi untuk Visual Studio 2012
Kolonel Panic
4
Ini tidak akan membantu jika Anda menggunakan Visual Studio Express
BornToCode
18
Dengan Visual Studio 2012, nama perintah telah sedikit berubah. Sekarang Window.NextTab dan Window.PreviousTab .
JP ten Berge
3
@ JP sepuluh Berge - Saya sudah menguji ini di VS 2012, dan pintasan Window.PreviousTab (Ctrl + Alt + PgUp) tidak berfungsi jika Anda berada di tampilan Razor (file .cshtml). Sangat menjengkelkan, meskipun Ctrl + Alt + PgDown masih berfungsi sehingga Anda tidak sepenuhnya terjebak. Ada juga Window.NextDocumentWindow (Ctrl + F6) meskipun tampaknya siklus tab dalam urutan yang aneh.
DGreen
70

Visual Studio 2010 memiliki, bawaan, cara untuk menyelesaikan ini.

Secara default, Ctrl+ Tabdan Ctrl+ Shift+ Tabditugaskan untuk Window.[Previous/Next]..Document, tetapi Anda bisa, melaluinya

Tools -> Options -> Environment -> Keyboard,

hapus penugasan utama tersebut dan tetapkan kembali Window.[Next/Previous]Tabuntuk menambahkan perilaku yang diinginkan.

Zoey
sumber
5
Rupanya seseorang telah mengacaukan alasan di balik downvote- Jika jawaban tidak sesuai dengan pertanyaan atau jika itu sebenarnya negatif itu layak satu ... Tapi saya menjawab pertanyaan dengan benar, meskipun kurang dari jawaban Anda. Apakah hanya saya yang mengharapkan orang untuk benar-benar memahami menu pilihan daripada "Di sini, jalankan skrip ini" atau, "Instal addon ini!" ... ... Bukankah ini situs untuk programmer?
Zoey
1
Orang-orang mungkin telah mencari untuk beralih di antara tab dokumen. Mengedit 'Window. [Next / Previuos] Tab' tidak mempengaruhi tab dokumen untuk saya di VS2010 sedangkan solusi @thepaulpage lakukan. +1 untuk pendekatan yang jelas dan bebas addon!
GnomeDePlume
⁺¹, juga saya baru saja berpikir mengapa seseorang bisa menurunkan jawaban Anda: Visual Studio 2010 memiliki beberapa versi aneh yang tidak memiliki opsi «Keyboard». Jadi mungkin yang memiliki versi ini, melihat opsi, dan memutuskan bahwa jawabannya salah karena dengan sudut pandang subyektif mereka memang demikian.
Hi-Angel
1
Saya harus menghapus ikatan dari Window.[Previous|Next]DocumentWindowpengaturan agar ini berfungsi (dalam VS2015). Secara default, ada editor teks terpisah yang mengikat untuk itu yang tampaknya menjadi prioritas.
Kat
51

itu bisa diubah, setidaknya di VS 2012 (saya pikir itu harus bekerja untuk 2010 juga).

1) TOOLS > Options > Environment > Keyboard

(Ya ALAT, itu VS2012!) Sekarang tiga pintasan untuk memeriksa.

2) Window.NextDocumentWindow- Anda dapat mencapai di sana dengan cepat dengan mengetik di panel pencarian di atas. Sekarang ini adalah musuhmu . Hapus jika Anda tidak menyukainya. Ubahlah ke sesuatu yang lain (dan jangan lupa tombol Tetapkan ) jika ingin memiliki Anda sendiri, tetapi ingatlah pintasan apa pun itu pada akhirnya . Ini akan berguna nanti.

(Maksud saya ini adalah jalan pintas yang mengingat tab terakhir Anda)

masukkan deskripsi gambar di sini

3) Sekarang cari Window.NextDocumentWindowNav- ini sama seperti di atas tetapi menunjukkan preview dari tab yang dibuka (Anda dapat menavigasi ke jendela lain terlalu cepat dengan pop-up ini). Saya tidak pernah menemukan ini membantu. Lakukan semua yang disebutkan pada langkah 2 (jangan lupa untuk mengingat ).

4) Window.NextTab- ramuan ajaib Anda. Ini akan membuat Anda menggilir tab di urutan maju. Mungkin Anda ingin CTRL+ TAB? Sekali lagi langkah 2 dan ingat .

5) Sekarang tempatkan kursor di tombol pintas Tekan: kotak teks (tidak masalah apa yang dipilih saat ini, Anda tidak akan Menugaskan saat ini), dan ketik pertama dari tiga (atau dua atau satu) cara pintas.

masukkan deskripsi gambar di sini

Anda akan melihat Shortcut yang saat ini digunakan oleh: terdaftar. Pastikan Anda tidak memiliki entri duplikat untuk pintasan. Di dalam pic, tidak ada entri rangkap. Jika Anda memiliki (jarang), katakan X, lalu pergi ke X, dan hapus pintasan. Ulangi langkah ini untuk pintasan lain juga.

6) Sekarang ulangi 1-5 untuk Previouspintasan juga (sebaiknya menambahkan Shift).

7) Bonus: Pilih skema pemetaan VS2005 (di bagian atas kotak yang sama), jadi sekarang Anda dapatkan F2untuk mengganti nama anggota dan bukan CTRL+ R+ R, dan F7untuk Lihat Kode dan bukan CTRL+ ALT+ 0.

Saya berpendapat VS secara default sudah benar. Saya merasa sangat berguna bahwa VS mengingat apa yang saya gunakan terakhir, dan membuat beralih lebih mudah, seperti apa OS itu sendiri (di ALT+ TAB). Browser saya juga melakukan hal yang sama secara default (Opera), meskipun saya tahu Firefox berperilaku berbeda.

nawfal
sumber
Saya juga tidak menemukan perilaku ini anti-non-kontra-intuitif. ;-)
dotNET
Pendapat di bagian atas dari jawaban ini selalu menyadap saya sebagai tidak informatif dan (karena ukurannya yang besar) tidak perlu bermusuhan.
halaman
@thepaulpage Saya telah memperbarui jawaban saya. Alasan saya harus memberikan pendapat adalah karena banyak pengguna (termasuk OP) telah memberikan pendapat mereka bahwa itu kontra-intuitif.
nawfal
16

Di Visual Studio 2012 atau lebih baru (2013, 2015, 2017 ...):

  1. Jelajahi menu Tools / Options / Environment / Keyboard.
  2. Cari perintah 'Window.NextTab', atur pintasan ke Ctrl+Tab
  3. Cari perintah 'Window.PreviousTab', atur pintasan ke Ctrl+ Shift+Tab

masukkan deskripsi gambar di sini

Kolonel Panic
sumber
4
Untuk referensi, secara default, Ctrl + Tab dan Ctrl + Shift + Tab dipetakan ke perintah 'Window.NextDocumentWindowNav' dan 'Window.PreviousDocumentWindowNav'.
Rory O'Kane
8

Arahkan ke posting blog Visual Studio Tab Un-stupidifier Macro dan manfaatkan makro. Setelah Anda menerapkan makro untuk instalasi Visual Studio Anda, Anda dapat mengikat pintasan keyboard favorit Anda. Perhatikan juga perbaikan registri di komentar karena tidak menampilkan balon makro karena mungkin akan mengganggu setelah beberapa saat.

pengguna178908
sumber
Tampaknya masih rusak dalam beberapa kondisi, tetapi ini adalah yang paling keren untuk benar-benar bekerja seperti yang diinginkan.
Jeff Cuscutis
Di VS 2010 Anda dapat mengkonfigurasi Ctrl + Tab dan Ctrl + Shift + Tab untuk mengubah antara dokumen teks, tetapi itu tidak berfungsi dengan tab desainer atau BinaryEditor. Makro dari posting blog di atas adalah satu-satunya metode yang berfungsi dengan sebagian besar jenis jendela dokumen. Saya juga mengajukan bug pada Microsoft yang memiliki perincian lebih lanjut ( goo.gl/K9rz ), dan mereka mengatakan bahwa mereka akan berubah Window.NextTabdan Window.PreviousTabmenyediakan peralihan non-MRU untuk dokumen dalam "versi Visual Studio berikutnya".
Greg Bray
7

Setelah beberapa jam mencari, saya menemukan solusi bagaimana beralih antara dokumen yang terbuka menggunakan CTRL+ TAByang bergerak dari kiri ke kanan dan SHIFT+ CTRL+ TABke kanan ke kiri.

Singkatnya, Anda perlu menyalin dan menempel makro ini:

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 berasal dari: www.mrspeaker.net/2006/10/12/tab-un-stupidifier/

Jika Anda tidak pernah menambahkan makro ke Visual Studio ada tautan yang sangat berguna bagaimana melakukannya .

pengguna410261
sumber
2
Apakah masih butuh 10 detik untuk melakukan ini pertama kali, dan flash ikon baki sistem setiap kali Anda menggunakannya? Itu yang VS2005 lakukan, dan saya tidak bisa menerimanya ...
Roman Starkov
1
Romkyns: Ya, saya takut. Masih bukan solusi yang layak.
David Foster
1
Romkyns: ya itu benar, setiap kali saya menjalankan makro, sebuah balon muncul di baki sistem untuk menunjukkan makro berjalan. untuk menghilangkan ballon itu, Anda dapat mengedit Registry Windows dan menambahkan nilai DWORD berikut: "DontShowMacrosBalloon" = 1, dengan kunci itu: HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 9.0 (gunakan 9.0 untuk Visual Studio 2008; 8.0 untuk 2005) . Balon menghilang tetapi ikon baki sistem masih akan muncul. Bagi saya solusi ini cukup baik saya belum menemukan yang lebih baik dan saya benci perilaku ctrl + tab orginalne.
user410261
6

Filosofi dari urutan tab Visual Studio sangat berlawanan dengan intuisi karena urutan tab yang ditampilkan berbeda dari logika tab-switching, menjadikan urutan tab sama sekali tidak berguna .

Jadi sampai solusi yang lebih baik muncul, ubah tata letak jendela (di Lingkungan-> Umum) dari tab-dokumen ke banyak-dokumen; itu tidak akan mengubah perilaku, tetapi mengurangi kebingungan yang disebabkan oleh tab.

Dengan begitu Anda juga akan menemukan DocumentWindowNav lebih bermanfaat!

Peter Mortensen
sumber
6

Ctl+ Alt+ PgUpatau PgDnpintasan berfungsi untuk beralih ke tab berikutnya / sebelumnya di luar kotak untuk saya ...

FlashJordan
sumber
3
Hal yang tidak masuk akal adalah: Jika bilah tab Anda hanya memiliki ruang horizontal untuk n Tab, pintasan itu tidak akan membuat tab berputar untuk tab yang tidak terlihat saat ini!
sergiol
5

Saya 100% setuju dengan Jeff.

Saya telah bekerja di Borland C ++ Builder selama beberapa tahun dan salah satu fitur yang paling saya rindukan adalah urutan tabbing dokumen yang 'benar' dengan Ctrl- Tab. Seperti yang dikatakan Jeff, " Perilaku tab saat ini terus menarik saya keluar dari tugas dan membuat saya harus memperhatikan alat ini " adalah persis apa yang saya rasakan tentang ini, dan saya sangat terkejut dengan kenyataan bahwa tidak ada banyak orang mengeluh tentang ini.

Saya pikir Ctrl- F6- NextDocumentWindowNav - menavigasi dokumen berdasarkan waktu terakhir dokumen diaktifkan. Perilaku ini sangat mirip dengan bagaimana aplikasi MDI digunakan untuk berperilaku di masa lalu.

Dengan mempertimbangkan hal ini, saya biasanya menggunakan Ctrl+ F6untuk beralih di antara 2 dokumen (yang cukup berguna untuk beralih antara file .cpp dan .h ketika bekerja pada proyek c ++) bahkan ketika ada lebih dari 2 dokumen yang saat ini dibuka. Sebagai contoh, jika Anda memiliki 10 dokumen terbuka (Tab1, Tab2, Tab3, ...., Tab10), saya klik pada Tab1 dan kemudian Tab2. Ketika saya melakukan Ctrl+ F6dan melepaskan kunci, saya akan melompat ke Tab1. Menekan Ctrl+ F6lagi akan membawa saya kembali ke Tab2.

Kei
sumber
5

Saya kira Anda menginginkan panggilan VSS Berikutnya (Sebelumnya) DocumentWindow. Secara default, itu aktif Ctrl(-Shift)-F6pada VSS saya 8. Pada yang Ctrl(-Shift)-Tabmereka miliki Next(Previous)DocumentWindowNav. Anda dapat mengubah tugas utama melalui Alat / Opsi / Keyboard.

buti-oxa
sumber
3
Ctrl- (Shift-) F6 tidak membuat Anda ke tab kiri atau kanan. urutannya sama dengan Ctrl-Tab tetapi tanpa jendela yang mengganggu.
shoosh
1
Benar ... Visual Studio 2010 memiliki Window.NextTab dan Window.PreviousTab, yang mengubah dokumen berbasis non-MRU, tetapi tidak bekerja dengan semua jenis dokumen: connect.microsoft.com/VisualStudio/feedback/details/571750/…
Greg Bray
4

Di cabang registri: HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 9.0 tambahkan DWORD bernama "UseMRUDocOrdering" dengan nilai 1. Ini akan memesan dokumen sehingga yang paling baru digunakan ditempatkan di sebelah kiri. Itu tidak sempurna tetapi lebih baik dari kesalahan standar.

kaum urakan
sumber
0

Diperbarui ke VS 2017+, di mana, menurut komentar @ J-Bob di bawah jawaban @ thepaulpage, (penekanan ditambahkan):

Sepertinya perintah sudah berubah lagi. Sekarang tahun 2017 dan pintasan keyboard disebut Open Next Editor dan Open Previous Editor . Anda tidak memerlukan ekstensi apa pun untuk ini.

Anda dapat menemukan opsi di bawah Pengaturan, yang dapat diakses melalui simbol gir di kiri bawah, atau dengan [Ctrl]+,perintah.

JWCS
sumber
-5

Saya tidak menggunakan Visual Studio ( ya, sungguh, saya tidak menggunakannya ), tetapi AutoHotkey dapat memetakan kembali hotkey apa pun secara global atau dalam aplikasi tertentu:

#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

Ini adalah dua remapping dari skrip Autohotkey utama saya. Saya pikir ini adalah alat yang sangat baik untuk jenis tugas ini.

PabloG
sumber
3
Maaf, tetapi masalahnya adalah tidak ada kunci yang melakukan hal yang benar, jadi ini tidak akan membantu.
Roman Starkov