In my new role I’m primarily developing in C# whereas my primary language in the past has been Visual Basic .NET. With a different language, comes a different Visual Studio profile, and with a different Visual Studio profile comes different key bindings.

This Visual Studio macro outputs each Visual Studio command (alphabetically) and its associated key bindings. When run the key bindings will be output to Visual Studio’s Output window, from here you can copy and paste them into whatever format you want.

Public Sub DumpBindings()

    Dim commands As New System.Collections.Generic.Dictionary(Of String, System.Collections.Generic.List(Of String))

    For Each command As Command In DTE.Commands

        Dim bindings As Object() = DirectCast(command.Bindings, Object())

        If String.IsNullOrEmpty(command.Name) OrElse bindings.Length = 0 Then

            Continue For

        End If

 

        commands.Add(command.Name, New System.Collections.Generic.List(Of String))

        For Each binding As Object In bindings

            Dim bindingValue As String = DirectCast(binding, String)

            commands(command.Name).Add(bindingValue)

        Next

    Next

 

    Dim commandNames(commands.Keys.Count - 1) As String

    commands.Keys.CopyTo(commandNames, 0)

    Array.Sort(commandNames)

 

    For Each commandName As String In commandNames

        Debug.WriteLine(commandName)

 

        commands(commandName).Sort()

        For Each binding As String In commands(commandName)

            Debug.WriteLine("{0}{1}", ControlChars.Tab, binding)

        Next

    Next

End Sub