Visual Studio perintah jendela langsung untuk Hapus Semua

100

Apakah ada perintah untuk menghapus jendela langsung di Visual Studio?

Saya benci harus mengambil mouse untuk menu klik kanan di sana - lebih suka mengetik "cls" atau sesuatu.

Scott Ivey
sumber
14
tidak menyadari ada menu klik kanan!
JonnyRaa

Jawaban:

133

Untuk menghapus jendela langsung, Anda dapat menggunakan >cls, yang merupakan alias perintah standar untuk >Edit.ClearAll.

Artikel MSDN mencantumkan semua alias standar dan Anda juga dapat menentukan sendiri. (Untuk VS 2010 dan sebelumnya, alias kustom dijelaskan dalam artikel yang terpisah, meskipun.) Memindai melalui, ada membunuh seluruh mereka, beberapa di antaranya bahkan mungkin memiliki akar dalam MS-DOS DEBUG.EXE (khusus >d, >g, >p, >q, dan> tmuncul dalam pikiran).


Juga perlu diperhatikan, karena hanya ada dua tombol yang harus ditekan: Menu konteks> Hapus Semua menjalankan perintah yang sama dan dapat dinavigasi menggunakan keyboard. Pada jendela langsung, Anda dapat menekan context-menu, L.

Jika Anda tidak memiliki context-menukunci pada keyboard Anda (Anda tahu, kunci antara right-altdan right-ctrl), Anda dapat menggunakan shift+ F10sebagai gantinya.

lc.
sumber
1
Saya biasanya menggunakan kunci konteks ketika saya berada di kantor - tetapi saya telah bekerja dengan laptop selama beberapa bulan terakhir dari kantor klien, dan saya tidak memiliki kunci konteks di atasnya. Akhirnya cukup mengganggu saya untuk mencari solusi ...
Scott Ivey
1
Itu >penting. Tidak bisa memikirkan cara alami untuk membuatnya lebih eksplisit dalam jawaban. Juga, lihat Jendela Segera di MSDN untuk tip berguna lainnya.
Palec
50
>cls 

sepertinya melakukannya untuk saya.

Martin Brown
sumber
17
  1. Tempatkan kursor mouse di Jendela Segera.
  2. Klik kanan pada mouse dan pilih "Clear All".
rossco78
sumber
12

menemukannya...

"> Edit.ClearAll"

atau

"> cls"

Scott Ivey
sumber
3

Berikut adalah cara melakukannya pada waktu proses:

  1. Referensi dll EnvDTE di aplikasi Anda.

  2. Buat dan kemudian gunakan fungsi ini seperlunya.

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
pengguna1330634
sumber
Tidak bekerja untuk saya. Kesalahan adalah: "Pengecualian kesempatan pertama jenis 'System.Runtime.InteropServices.COMException' terjadi di mscorlib.dll" saat mendapatkan objek dari Marshal.
Mojtaba Rezaeian
Versi visual studio saya adalah 2012 jadi aku berubah VisualStudio.DTE.10.0untuk VisualStudio.DTE.11.0dan bekerja. Juga di sini saya menemukan sintaks yang lebih pendek dari jawaban yang sama: http://stackoverflow.com/a/16873888/2721611
Mojtaba Rezaeian
1

Untuk visual studio 2012 saya menggunakan:

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

untuk secara otomatis menghapus jendela langsung dari kode (perlu menambahkan referensi DTE ke proyek). Jika tidak bekerja coba VisualStudio.DTE.8.0, VisualStudio.DTE.9.0, ...menurut versi visual studio Anda.

Mojtaba Rezaeian
sumber
0

Saya menggunakan jawaban terakhir hanya tentang kata demi kata dan berhasil, meskipun saya ingin fokus kembali ke tempatnya. Ini versi C # yang sangat sedikit ditingkatkan. Saya mengaktifkannya dengan sakelar konfigurasi.

#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! */ }

berakhir jika

Wade Hatler
sumber
1
Hanya gotcha; jika Anda memiliki lebih dari satu contoh VS terbuka, hukum Murphy menyatakan bahwa itu akan menghapus yang lain dan membiarkan Anda mencoba mencari tahu mengapa F ^ & $% **! itu tidak berhasil. Setidaknya itulah yang saya lakukan selama 20 menit terakhir.
Luc VdV
Dan sekarang berfungsi, tapi saya pikir hanya jika VS adalah jendela aktif. Jika jendela lain (misalnya proyek yang sedang saya debug) aktif ketika kode ini dijalankan, saya mendapatkan "Pengecualian dari HRESULT: 0x80010001 (RPC_E_CALL_REJECTED)".
Luc VdV
Kamu benar. Jika Anda menjalankan 2 contoh, Anda harus mencari cara yang rasional untuk membedakan satu dari yang lain. Saya membayangkan Anda harus mengulang semua jendela utama dan memeriksa yang memiliki ZOrder tertinggi. Saya berhenti menggunakan ini beberapa waktu lalu karena saya menemukan cara yang lebih baik. Saya menulis ini karena Visual Studio mencuri pesan Debug. Untuk semua alat lain saya menjalankannya melalui DbgView (SysInternals). Saya menulis proses back end yang menangkap mereka sebelum Visual Studio mencurinya, dan meneruskannya ke DbgView, jadi saya kembali ke apa yang saya inginkan di tempat pertama.
Wade Hatler