Answers:
要清除立即窗口,可以使用>cls
,这是预定义的命令别名,用于>Edit.ClearAll
。
MSDN文章列出了所有预定义的别名,您也可以定义自己的别名。(2010年VS和更早版本,自定义别名在另一篇文章中所描述的,虽然)。通过扫描,还有他们的整体转换,其中一些甚至可能有他们的MS-DOS DEBUG.EXE根(特别是>d
,>g
,>p
,>q
,和> t
浮现在脑海中)。
同样值得一提的是,只需按两个键即可:上下文菜单>全部清除会调用同一命令,并且可以使用键盘进行导航。在立即窗口中,您可以按context-menu
,L
。
如果您的键盘上没有context-menu
键(right-alt
和之间的键right-ctrl
),则可以使用shift
+ F10
代替。
这是在运行时执行的方法:
在您的应用程序中引用EnvDTE dll。
创建,然后根据需要使用此功能。
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
了VisualStudio.DTE.11.0
它,并且可以正常工作。同样在这里,我找到了相同答案的较短语法:http
对于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引用)。如果不起作用,请根据Visual Studio版本尝试VisualStudio.DTE.8.0
,。VisualStudio.DTE.9.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! */ }