모두 지우기를위한 Visual Studio 즉시 창 명령


답변:


133

직접 실행 창을 지우려면 >cls에 미리 정의 된 명령 별칭 인 을 사용할 수 있습니다 >Edit.ClearAll.

MSDN 문서 에는 미리 정의 된 모든 별칭이 나열되어 있으며 직접 정의 할 수도 있습니다. (VS 2010 및 이전 버전의 경우, 사용자 정의 별칭 불구하고 별도의 문서에 설명되어 있습니다.)를 통해 스캔, 심지어 MS-DOS DEBUG.EXE에서 자신의 뿌리를 (해야 할 수도 있습니다 일부는 이들의 전체 슬루가있다 특히 >d, >g, >p, >q, 그리고> t떠오르십시오).


또한 두 개의 키만 누르면됩니다. 컨텍스트 메뉴> 모두 지우기는 동일한 명령을 호출하며 키보드를 사용하여 탐색 할 수 있습니다. 직접 실행 창에서는 누를 수 있습니다 context-menu, L.

키보드에 context-menu 가없는 경우 ( right-alt과 사이에 있는 right-ctrl ) 대신 shift+ F10를 사용할 수 있습니다 .


1
저는 일반적으로 사무실에있을 때 컨텍스트 키를 사용합니다.하지만 지난 몇 달 동안 고객 사무실에서 랩톱으로 작업 해 왔는데 컨텍스트 키가 없습니다. 마침내 해결책을 찾기에 충분히 귀찮았습니다 ...
Scott Ivey

1
>중요하다. 대답에서 더 명확하게 만드는 자연스러운 방법을 생각할 수 없었습니다. 또한 더 유용한 팁은 MSDN의 직접 실행 을 참조하십시오 .
Palec 2017-04-03


17
  1. 직접 실행 창에 마우스 커서를 놓습니다.
  2. 마우스 오른쪽 버튼을 클릭하고 "모두 지우기"를 선택합니다.


3

다음은 런타임에 수행하는 방법입니다.

  1. 애플리케이션에서 EnvDTE dll을 참조하십시오.

  2. 필요에 따라이 함수를 만들고 사용합니다.

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

나를 위해 일하지 않습니다. 오류 : "mscorlib.dll에서 'System.Runtime.InteropServices.COMException'유형의 첫 번째 예외가 발생했습니다." Marshal에서 개체를 가져 오는 동안.
Mojtaba Rezaeian

내 Visual Studio 버전은 2012이므로 변경 VisualStudio.DTE.10.0하여 VisualStudio.DTE.11.0작동했습니다. 또한 여기에서 동일한 답변의 더 짧은 구문을 찾았습니다. http://stackoverflow.com/a/16873888/2721611
Mojtaba Rezaeian

1

Visual Studio 2012의 경우 다음을 사용합니다.

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

코드에서 즉시 창을 자동으로 지우려면 (프로젝트에 DTE 참조를 추가해야 함) 이 시도 작품을하지 않으면 VisualStudio.DTE.8.0, VisualStudio.DTE.9.0, ...시각적 스튜디오 버전에 따라.


0

나는 마지막 대답을 그대로 사용했으며 작동하지만 원래 위치에 초점을 맞추고 싶었습니다. 다음은 매우 약간 향상된 C # 버전입니다. 구성 스위치로 활성화합니다.

#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
그냥 잡았습니다. VS의 인스턴스가 두 개 이상 열려있는 경우 머피의 법칙은 다른 인스턴스를 지우고 F ^ & $ % **! 작동하지 않습니다. 적어도 그것이 지난 20 분 동안 제가해온 일입니다.
Luc VdV

이제 작동하지만 VS가 활성 창인 경우에만 생각합니다. 이 코드가 실행될 때 다른 창 (예 : 디버깅중인 프로젝트)이 활성화되면 "Exception from HRESULT : 0x80010001 (RPC_E_CALL_REJECTED)"가 표시됩니다.
Luc VdV

네가 옳아. 2 개의 인스턴스를 실행하는 경우 서로 구분할 수있는 합리적인 방법을 찾아야합니다. 모든 주 창을 반복하고 ZOrder가 가장 높은 창을 확인해야한다고 생각합니다. 나는 더 나은 방법을 생각해 냈기 때문에 얼마 전에 이것을 사용하지 않았습니다. Visual Studio가 디버그 메시지를 훔치기 때문에 이것을 작성했습니다. 다른 모든 도구의 경우 DbgView (SysInternals)를 통해 실행합니다. 나는 Visual Studio가 그것들을 훔치기 전에 그것들을 캡처하는 백엔드 프로세스를 작성하고 그것들을 DbgView로 전달하기 때문에 처음에 내가 원했던 것으로 돌아 왔습니다.
Wade Hatler
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.