Visual Studioでドキュメント間を移動するためのCtrl + Tab動作の変更


286

Visual StudioでCtrl+ TabShift+ Ctrl+のTab動作を変更することはできますか?タブコントロール内のアイテムを切り替えるだけなので、ポップアップナビゲーターウィンドウを無効にしました。私の問題は、次の文書と前の文書への切り替えが何を行うかの一貫性がないことです。

開いているドキュメントのタブコントロールを使用する他のすべてのプログラムは、私が見てきた用途Ctrl+は、Tab左から右に移動するとShift+ Ctrl+はTab右から左に移動するには。Visual Studioは、最後に選択されたタブへのジャンプでこれを解消します。最終的にどのドキュメントになるかを知ることはできません。また、同じ方法を2回行うこともありません。

直感に反しています。これは、一度に2つのドキュメントのみを開くことを全員に奨励するための巧妙な方法ですか?


いくつかのファイルを開いているとしましょう。私は1つで作業しており、右側の次のタブに何があるかを確認する必要があります。地球に面する他のすべての単一のアプリケーションでは、Ctrl+ Tabが私をそこに導きます。しかし、Visual Studioでは、他のどのタブに移動するのかわかりません。開いているドキュメントが2つしかない場合は、これでうまくいきます。3つ以上に進むと、Visual Studioがどのタブに送信することを決定したかについて、すべての賭けが行われなくなります。

これの問題は、ツールについて考える必要がないこと、ツールがバックグラウンドにフェードインすること、そしてタスクについて考えることです。現在のタブの動作は私をタスクから引き離し続け、ツールに注意を払わなければなりません。


4
「ポップアップナビゲーターウィンドウを無効にしました」...迷惑な選択ウィンドウポップアップをどのようにオフにしましたか?Ctrl + Tabを押すたびにちらつくだけで、迷惑です。
demoncodemonkey 2009

31
ええ、ツール->オプション->キーボードでCtrl + TabをWindow.NextDocumentWindowNavからWindow.NextDocumentWindowに再マップしました(「Nav」を削除しました)。また、Window.PreviousDocumentWindowNavでCtrl + Shift + Tabを使用した場合も同様です。
demoncodemonkey 2009

11
alt-tabと同じように、この動作が好きなのは間違っていますか?
Theo Belaire、2011

3
Visual Studioは、「最近使用された」(MRU)動作を使用してタブ間を移動しているように見えます。Notepad ++は、この動作を有効/無効にするオプションを提供します(そのため、一部の人はそれを気に入っているようです)。私は本当に通常の直感的な動作に切り替えることができるようにしたいのですが。
アンドレ・キャノン

4
正直なところ、プログラムが視覚的なタブ順序で循環するのは好きではありません。Visual Studioの動作に同意します。すべてのctrl + tabについて、最後に使用されたものに戻り、次にその前に最後に使用されたものに戻ります。このパターンは非常に長い間存在しています(VB6以前かと思います)。つまり、好みのパターンを使用しますが、それがどのように機能するかを知っていると、理解しやすくなります:)
Josh Robinson

回答:


227

Visual Studio 2015(および以前のバージョンのVS ですが、VS2013以下を使用している場合はProductivity Power Toolsをインストールする必要があります)には、Visual Studioに2つの新しいコマンドがあります。

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という名前でした


1
これがビジュアルスタジオ2010の現在のベストアンサーです。これは非常に役に立ちました。受け入れられているマクロソリューションは、これよりも劣っています。
jmq 2011年

2
Visual Studio 2012のバージョンはまだない
パニック大佐

4
これは、Visual Studio Expressを使用する場合にも役立ちません
BornToCode

18
Visual Studio 2012では、コマンド名が若干変更されています。現在はWindow.NextTabおよびWindow.PreviousTabです。
JP ten Berge 2013年

3
@JP ten Berge-これはVS 2012でテストしましたが、Razorビュー(.cshtmlファイル)を使用している場合、Window.PreviousTabショートカット(Ctrl + Alt + PgUp)は機能しません。非常に迷惑ですが、Ctrl + Alt + PgDownは引き続き機能するため、完全に行き詰まることはありません。Window.NextDocumentWindow(Ctrl + F6)もありますが、タブが奇妙な順序で循環しているようです。
DGreen 2013

70

Visual Studio 2010には、これを解決する方法が組み込まれています。

デフォルトでは、Ctrl+ TabCtrl+ Shift+ Tabがに割り当てられてWindow.[Previous/Next]..Documentいますが、

Tools -> Options -> Environment -> Keyboard,

これらのキー割り当てを削除し、それらをに再度割り当ててWindow.[Next/Previous]Tab、目的の動作を追加します。


5
どうやら誰かが反対票の背後にある推論を混乱させたようです-回答が質問に準拠していない場合、またはそれが実際に否定的である場合、それはそれに値します... 「ここでこのスクリプトを実行する」や「このアドオンをインストールする」ではなく、実際にオプションメニューを理解することを期待しているだけなのでしょうか。これはプログラマー向けのサイトではありませんか?
Zoey 2013

1
人々はドキュメントのタブを切り替えることを望んでいたかもしれません。'thewind。[Next / Previuos] Tab'を編集しても、VS2010のドキュメントタブには影響しませんでしたが、@ thepaulpageのソリューションでは影響がありました。明確でアドオンなしのアプローチの+1!
GnomeDePlume 2013

⁺¹、また、なぜ誰かがあなたの回答に反対票を投じることができるのかについて考えました:Visual Studio 2010には、«キーボード»オプションのない奇妙なバージョンがありました。したがって、おそらくこのバージョンがあり、オプションを検討し、主観的な観点から見ると実際にそうであるので、答えは間違っていると判断しました。
ハイエンジェル

1
Window.[Previous|Next]DocumentWindowこれを機能させるには、設定からバインディングを削除する必要がありました(VS2015)。デフォルトでは、優先されるように見える別のテキストエディターバインディングがありました。
Kat

51

少なくともVS 2012では変更できます(2010でも機能するはずです)。

1) TOOLS > Options > Environment > Keyboard

(はいTOOLS、そのVS2012!)ここで、確認する3つのショートカットがあります。

2)Window.NextDocumentWindow-上部の検索ペインに入力すると、すばやくそこにアクセスできます。今、これはあなたのです。気に入らない場合は削除してください。独自のものにしたい場合は、別の何かに変更します([割り当て ]ボタンを忘れないでください)。ただし、最終的にはそのショートカットを覚えておいてください。後で重宝します。

(つまり、これは最後のタブを記憶するショートカットです)

ここに画像の説明を入力してください

3)次に探しますWindow.NextDocumentWindowNav-これは上記と同じですが、開いているタブのプレビューが表示されます(このポップアップを使用すると、他のウィンドウにすばやく移動できます)。私はこれが役に立ったとは思いませんでした。ステップ2で述べたことすべてを行う(ことを忘れないでください覚えておいてください)。

4)Window.NextTab-あなたの魔法のポーション。これにより、タブを順方向に循環できます。あなたはCTRL+ を望んでいるかもしれませTABん もう一度ステップ2を思い出してください

5)次に、[ ショートカットキーを押す]テキストボックス(現在何が選択されているかは関係ありません。今回は割り当てません)にカーソルを置き、3つ(または2つまたは1つ)のショートカットの最初に入力します。

ここに画像の説明を入力してください

現在使用されているショートカットが表示されます。ショートカットの重複エントリがないことを確認してください。写真では、重複するエントリはありません。(珍しい)場合は、Xと言ってから、Xに移動して、ショートカットを削除します。他のショートカットについてもこの手順を繰り返します。

6)Previousショートカットについても1〜5を繰り返します(できればを追加しますShift)。

7)ボーナス:同じボックスの上部にあるセレクトVS2005のマッピング方式()、今あなたが得るF2ための名前の変更のメンバーではなくCTRL+ R+ R、およびF7のためのコードの表示やありませんCTRL+ ALT+ 0

私はVSがデフォルトで正しく設定していると思います。OS自体(ALT+ TAB)と同様に、VSが最後に使用したものを記憶し、切り替えを簡単にすることは非常に便利です。私のブラウザもデフォルト(Opera)で同じように動作しますが、Firefoxの動作は異なります。


私はこの振る舞いが反非直観的だとは思いません。;-)
dotNET 2015年

この回答の上部にある意見は、常に情報量が多くなく、(サイズが大きいため)不必要に敵対的であると常に私を悩ませてきました。
thepaulpage

@thepaulpage回答を更新しました。私が意見を述べなければならなかった理由は、多くのユーザー(OPを含む)が直感に反するものであると彼らの意見を述べたからです。
nawfal

16

Visual Studio 2012以降(2013、2015、2017 ...):

  1. メニューのツール/オプション/環境/キーボードを参照します。
  2. コマンド「Window.NextTab」を検索し、ショートカットをCtrl+に設定しますTab
  3. コマンド「Window.PreviousTab」を検索し、ショートカットをCtrl+ Shift+に設定しますTab

ここに画像の説明を入力してください


4
参考までに、デフォルトでCtrl + TabおよびCtrl + Shift + Tabは、コマンド 'Window.NextDocumentWindowNav'および 'Window.PreviousDocumentWindowNav'にマップされます。
Rory O'Kane 2013年

8

ブログの投稿「Visual Studio Tab Un-stupidifier Macro」に移動して、マクロを利用します。マクロをVisual Studioのインストールに適用した後、お気に入りのキーボードショートカットをマクロにバインドできます。また、マクロバルーンが表示されないようにするためのコメントのレジストリの修正にも注意してください。これは、しばらくすると迷惑になる可能性があるためです。


それは明らかにいくつかの条件の下でまだ壊れますが、これは実際に望み通りに機能するための最も疎いものです。
Jeff Cuscutis

VS 2010では、Ctrl + TabおよびCtrl + Shift + Tabを構成してテキストドキュメントを切り替えることができますが、デザイナータブやBinaryEditorでは機能しません。上記のブログ投稿のマクロは、ほとんどのドキュメントウィンドウタイプで機能する唯一の方法です。私はまた、より多くの詳細を持っているマイクロソフト(とバグを提出しgoo.gl/K9rz)、そして彼らが変わると言ったWindow.NextTabWindow.PreviousTab、「次のVisual Studioのバージョン」の文書のためのスイッチング非MRUを提供します。
グレッグブレイ

7

検索の数時間後、私は使用して開いているドキュメントを切り替えるにはどのように解決策た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に追加したことがない場合は、非常に便利なリンクがあり、その方法を説明しています。


2
初めてこれを行うのにまだ10秒かかり、それを使用するたびにシステムトレイアイコンを点滅させますか?それはVS2005がやったことであり、私はそれを受け入れることができませんでした...
Roman Starkov

1
Romkyns:はい、恐れています。まだ実行可能なソリューションではありません。
David Foster

1
Romkyns:はい、そうです。マクロを実行するたびに、マクロが実行中であることを示すバルーンがシステムトレイにポップアップします。その気球を取り除くには、Windowsレジストリを編集して、次のDWORD値を追加します。「DontShowMacrosBalloon」= 1、そのキーに:HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 9.0(Visual Studio 2008の場合は9.0、2005の場合は8.0) 。バルーンは消えますが、システムトレイアイコンは引き続き表示されます。私にとって、この解決策は十分良いものであり、私はこれ以上良いものを見つけていません。元のctrl + tab動作は嫌いです。
user410261 2010

6

表示されるタブの順序はタブ切り替えロジックとは異なり、タブの順序がまったく役に立たないため、Visual Studioのタブ順序の考え方は非常に直観に反しています。

したがって、より適切な解決策が見つかるまで、(環境->一般)のウィンドウレイアウトをタブ付きドキュメントから複数ドキュメントに変更してください。動作は変わりませんが、タブによって引き起こされる混乱を軽減します。

そうすれば、DocumentWindowNavがさらに便利になります。


6

Ctl+ Alt+ PgUpまたはPgDnショートカットを使用すると、次のタブまたは前のタブをボックスから切り替えることができます...


3
非論理的です:タブバーにn個のタブの水平方向のスペースしかない場合、これらのショートカットは、現在表示されていないタブのタブを循環させません!
sergiol 2016年

5

私はジェフと100%同意しています。

私はBorland C ++ Builderで数年間働いていましたが、私が最も見逃している機能の1つは、Ctrl-による「正しい」ドキュメントタブ順序Tabです。ジェフが言ったように、「現在のタブの動作は私をタスクから引き離し続け、ツールに注意を払わなければならない」と私はこれについて正確に私は感じており、それがないことに非常に驚いています多くの人がこれについて不満を言っています。

私は思いますCtrl-F6 - NextDocumentWindowNav -ドキュメントの最後の活性化時間に基づいてナビゲートドキュメントを。この動作は、MDIアプリケーションが昔はどのように動作していたかとよく似ています。

これを考慮に入れて、私は通常Ctrl+F6現在開いているドキュメントが2つ以上ある場合でも、を 2つのドキュメントを切り替えます(これは、c ++プロジェクトで作業するときに.cppファイルと.hファイルを切り替える非常に便利です)。たとえば、10個のドキュメント(Tab1、Tab2、Tab3、....、Tab10)を開いている場合、Tab1をクリックしてからTab2をクリックします。私はときにCtrl+ F6とキーを放し、私はTab1をにジャンプします。もう一度Ctrl+を押すとF6、Tab2に戻ります。


5

VSSがNext(Previous)DocumentWindowを呼び出すものが必要だと思います。デフォルトでCtrl(-Shift)-F6は、VSS 8でオンになっCtrl(-Shift)-TabていNext(Previous)DocumentWindowNavます。ツール/オプション/キーボードからキーの割り当てを変更できます。


3
Ctrl-(Shift-)F6では、左または右のタブに移動できません。Ctrl-Tabと同じ順序ですが、煩わしいウィンドウはありません。
2009

1
正しい... Visual Studio 2010にはWindow.NextTabとWindow.PreviousTabがあり、MRUベースではないドキュメントの変更を行いますが、すべてのドキュメントタイプでは機能しません。connect.microsoft.com
グレッグブレイ

4

レジストリブランチ:HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 9.0に、値1の「UseMRUDocOrdering」という名前のDWORDを追加します。これにより、ドキュメントが順序付けられ、最近使用されたものが左側に配置されます。完璧ではありませんが、デフォルトの動作よりは優れています。


0

VS 2017+に更新されました。@ thepaulpageの回答の下にある@ J-Bobのコメントによると(強調が追加されています):

コマンドが再び変更されたようです。現在は2017年で、キーボードショートカットはOpen Next EditorおよびOpen Previous Editorと呼ばれています。これには拡張機能は必要ありません。

オプションは[設定]にあり、左下の歯車の記号または[Ctrl]+,コマンドを使用してアクセスできます。


-5

私は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スクリプトの2つの再マッピングです。この種のタスクには優れたツールだと思います。


3
申し訳ありませんが、問題はありませんということです全く正しいことをしたキーが、これはいないのに役立ちます。
Roman Starkov、2010年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.