Czy istnieje polecenie wyczyszczenia bezpośredniego okna w programie Visual Studio?
Nienawidzę konieczności chwytania myszy za menu prawego przycisku myszy - wolałbym po prostu wpisać „cls” czy coś w tym stylu.
Czy istnieje polecenie wyczyszczenia bezpośredniego okna w programie Visual Studio?
Nienawidzę konieczności chwytania myszy za menu prawego przycisku myszy - wolałbym po prostu wpisać „cls” czy coś w tym stylu.
Odpowiedzi:
Aby wyczyścić natychmiastowe okno, można użyć >cls
, który jest predefiniowany polecenie alias do >Edit.ClearAll
.
Artykuł MSDN zawiera listę wszystkich predefiniowanych aliasów, ale możesz także zdefiniować własne. (Dla VS 2010 i wcześniej, niestandardowe aliasy są opisane w osobnym artykule, choć.) Skanowanie przez, istnieje cały zabił z nich, z których niektóre mogą nawet mieć swoje korzenie w MS-DOS (konkretnie Debug.exe >d
, >g
, >p
, >q
, i> t
przyjdą na myśl).
Warto również zauważyć, że wystarczy nacisnąć tylko dwa klawisze: Menu kontekstowe> Wyczyść wszystko wywołuje to samo polecenie i można po nim nawigować za pomocą klawiatury. W najbliższym okienku, można nacisnąć context-menu
, L
.
Jeśli nie masz context-menu
klawisza na klawiaturze (wiesz, ten między right-alt
a right-ctrl
), możesz zamiast tego użyć shift
+ F10
.
>
jest ważne. Nie mogłem wymyślić naturalnego sposobu, aby uściślić to w odpowiedzi. Więcej przydatnych wskazówek można znaleźć w sekcji Immediate Window w witrynie MSDN.
>cls
wydaje się, że robi to dla mnie.
znalazłem to ...
"> Edit.ClearAll"
lub
„> cls”
Oto jak to zrobić w czasie wykonywania:
Odwołaj się do bibliotek DLL EnvDTE w swojej aplikacji.
Utwórz, a następnie użyj tej funkcji, jeśli to konieczne.
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
VisualStudio.DTE.10.0
się VisualStudio.DTE.11.0
i to zadziałało. Również tutaj znalazłem krótszą składnię tej samej odpowiedzi: http://stackoverflow.com/a/16873888/2721611
Do Visual Studio 2012 używam:
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
aby automatycznie wyczyścić natychmiastowe okno z kodów (wymaga dodania odniesień DTE do projektu). Jeśli to nie zadziała VisualStudio.DTE.8.0
, spróbuj VisualStudio.DTE.9.0
, ...
zgodnie z wersją Twojego programu Visual Studio.
Użyłem ostatniej odpowiedzi prawie dosłownie i działa, chociaż chciałem skupić się z powrotem na tym, gdzie to było. Oto bardzo nieznacznie ulepszona wersja C #. Włączam to za pomocą przełącznika konfiguracyjnego.
#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! */ }