Tümünü Temizle için Visual Studio anında pencere komutu


100

Visual Studio'da hemen pencereyi temizlemek için bir komut var mı?

Orada bir sağ tıklama menüsü için fareyi tutmak zorunda kalmaktan nefret ediyorum - sadece "cls" veya başka bir şey yazmayı tercih ederim.


14
bir sağ tıklama menüsü olduğunu fark etmemiştim!
JonnyRaa

Yanıtlar:


133

Hemen pencereyi temizlemek için, >clsönceden tanımlanmış bir komut diğer adı olan kullanabilirsiniz >Edit.ClearAll.

MSDN makalesi önceden tanımlanmış tüm diğer adları listeler ve siz de kendinizinkini tanımlayabilirsiniz. (VS 2010 ve önceki için, özel adlar olsa ayrı bir makalesinde açıklanmıştır.) Üzerinden Tarama, hatta MS-DOS DEBUG.EXE içinde kökleri (sahip olabilir bazıları onlardan bir bütün öldürdü, orada özellikle >d, >g, >p, >q, ve> takla gel).


Ayrıca, basılması gereken yalnızca iki tuş olduğu için dikkat çekmeye değer: Bağlam menüsü> Tümünü Temizle aynı komutu çağırır ve klavye kullanılarak gezinilebilir. Hemen penceresinde, basabilir context-menu, L.

Eğer bir yoksa context-menuanahtarı klavyenizdeki (hani, aralarında bir right-altve right-ctrl) kullanabilirsiniz shift+ F10yerine.


1
Normalde ofisteyken bağlam anahtarını kullanıyorum - ancak son birkaç aydır bir müşteri ofisinde bir dizüstü bilgisayarda çalışıyorum ve üzerinde bağlam anahtarı yok. Sonunda ... Çözüm için bakmak yeterli beni rahatsız
Scott Ivey

1
Bu >önemlidir. Cevapta daha açık hale getirmenin doğal bir yolunu düşünemedim. Ayrıca, daha yararlı ipuçları için MSDN'de Anında Pencereye bakın .
Palec


17
  1. Fare imlecini Hemen Pencereye yerleştirin.
  2. Fareye sağ tıklayın ve "Tümünü Temizle" yi seçin.


3

İşte çalışma zamanında nasıl yapılacağı:

  1. Uygulamanızdaki EnvDTE dll'lerine başvurun.

  2. Bu işlevi gerekli şekilde oluşturun ve sonra kullanın.

Public Sub ClearImmediateWindow()
  Try
    Dim vsWindowKindImmediateWindow As String _ 
          = "{ECB7191A-597B-41F5-9843-03A4CF275DDE}"
    Try
      Dim obj As Object = System.Runtime.InteropServices.Marshal._ 
                          GetActiveObject("VisualStudio.DTE.10.0")
      If obj IsNot Nothing Then
        Dim DTE2 As EnvDTE80.DTE2 = CType(obj, EnvDTE80.DTE2)
        For Each wndw As EnvDTE.Window In DTE2.Windows
          If wndw.ObjectKind = vsWindowKindImmediateWindow Then
            wndw.Activate()
            DTE2.ExecuteCommand("Edit.ClearAll")
            Exit For
          End If
        Next
      End If
    Catch comEx As COMException
      ' Not running from within the VS IDE?
    Catch ex As Exception
      Throw ex
    End Try
  Catch ex As Exception
    ' Handle this as you desire.
  End Try
End Sub
  End Sub

Benim için çalışmıyor. Hata: " Marshal'dan nesne alınırken mscorlib.dll'de 'System.Runtime.InteropServices.COMException' türünde bir ilk olası istisna oluştu" .
Mojtaba Rezaeian

Değiştim yüzden benim visual studio sürümü 2012'dir VisualStudio.DTE.10.0için VisualStudio.DTE.11.0ve işe yaradı. Ayrıca burada aynı cevaba sahip daha kısa bir sözdizimi buldum: http://stackoverflow.com/a/16873888/2721611
Mojtaba Rezaeian

1

Visual Studio 2012 için kullanıyorum:

Public Sub ClearImmediateWindow()
    Dim dte As EnvDTE80.DTE2 = Marshal.GetActiveObject("VisualStudio.DTE.11.0")
    dte.Windows.Item("Immediate Window").Activate() 'Activate Immediate Window  
    dte.ExecuteCommand("Edit.SelectAll")
    dte.ExecuteCommand("Edit.ClearAll")
    Marshal.ReleaseComObject(dte)
End Sub

hemen pencereyi kodlardan otomatik olarak temizlemek için (projeye DTE referansları eklemeyi gerektirir). Denemek işleri Değilse VisualStudio.DTE.8.0, VisualStudio.DTE.9.0, ...görsel stüdyo sürümüne göre.


0

Son cevabı neredeyse kelimesi kelimesine kullandım ve işe yarıyor, yine de nerede olduğuna odaklanmayı istedim. İşte çok az geliştirilmiş C # sürümü. Bir yapılandırma anahtarı ile etkinleştiriyorum.

#if DEBUG
    if (GetIni("Debug", "ClearImmediateWindow", true)) {
        try {
            var dte = (EnvDTE.DTE) Marshal.GetActiveObject("VisualStudio.DTE.15.0");
            var me  = dte.ActiveWindow;
            dte.Windows.Item("Immediate Window").Activate();
            dte.ExecuteCommand("Edit.ClearAll");
            me.Activate();
        }
        catch { /* Meh! */ }

endif


1
Sadece bir aldatmaca; Birden fazla VS açık durumunuz varsa, Murphy kanunu diğerini temizleyeceğini belirtir ve sizi neden F ^ & $% ** 'nin neden olduğunu anlamaya çalışırken bırakır! çalışmıyor. En azından son 20 dakikadır yaptığım buydu.
Luc VdV

Ve şimdi çalışıyor, ancak sadece VS etkin pencere ise düşünüyorum. Bu kod çalıştırıldığında başka bir pencere (örneğin, hata ayıkladığım proje) etkinse, "HRESULT'tan istisna: 0x80010001 (RPC_E_CALL_REJECTED)" alıyorum.
Luc VdV

Haklısın. 2 örnek çalıştırıyorsanız, birini diğerinden ayırmak için mantıklı bir yol bulmanız gerekir. Tüm ana pencereleri yinelemeniz ve en yüksek ZOrder'a sahip olanı kontrol etmeniz gerektiğini hayal ediyorum. Bunu kullanmayı bir süre önce bıraktım çünkü daha iyi bir yol buldum. Bunu yazdım çünkü Visual Studio Debug mesajını çalıyor. Diğer tüm araçlar için onları DbgView (SysInternals) üzerinden çalıştırıyorum. Visual Studio onları çalmadan önce onları yakalayan ve DbgView'a ileten bir arka uç işlemi yazdım, böylece ilk etapta istediğim şeye geri döndüm.
Wade Hatler
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.