我刚开始接受ASP.Net MVC并发现自己写了很多<%=%>在意见中。 Intellisense确实提供了结束%>,但我发现输入介绍<%=会很麻烦(我很难输入: - ))。
我已经使用Rails和我能够输入的NetBeans IDE了解了一下:
r<tab> - which would expand to <% %>
和
re<tab> - which would expand to <%= %>
可以在Visual Studio 2008 IDE中完成类似的操作吗?
答案 0 :(得分:4)
根据评论,我仔细检查了下面的代码段答案,遗憾的是它不能在HTML视图中运行。另一种方法是通过录制的宏:
<%= %>
,然后将插入符号返回到“=”那可能就足够了,但最好把它放在所有项目中,加上我们想要比 CTRL + SHIFT <更好的击键< / KBD> + P :
现在您可以在HTML视图中按键快捷键(例如 ALT + A ),它将插入&lt;%=%&gt;,并将插入符号放入标签,准备输入。
[旧答案:遗憾的是,在HTML视图中不起作用。]
对于代码段,使用名称,快捷方式和扩展名创建XML代码段文件(例如“asp.snippet”),然后使用工具 - &gt;代码片段管理器,用于添加存储代码段的文件夹。
这是片段的XML(通过“asp [tab] [tab]”),展开“&lt;%= [code]%&gt;”
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippet Format="1.0.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<Header>
<Title>ASP Server Tags</Title>
<Author>Chris Bowen</Author>
<Shortcut>asp</Shortcut>
<Description>ASP.NET server escape characters, including equals</Description>
<SnippetTypes>
<SnippetType>SurroundsWith</SnippetType>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>code</ID>
<Default>Code</Default>
</Literal>
</Declarations>
<Code Language="csharp">
<![CDATA[<%= $code$ $selected$%>$end$]]>
</Code>
</Snippet>
</CodeSnippet>
更多详情请见here on MSDN。
BT,VS有一个片段来创建片段。只需打开一个新的XML文件,然后右键单击并选择Insert Snippet - &gt; “片段”。答案 1 :(得分:2)
这个宏功能应该这样做:
主代码将执行以下两项操作之一:如果未选择任何内容,则只会插入&lt;%=%&gt;代码构造,如果你在编辑器中有当前选择的东西,它将使用构造E.G.包装该代码。 &lt;%=此处选择的代码%&gt;
Public Sub WrapMVC()
Try
DTE.UndoContext.Open("Wrap MVC")
Dim OutText As String = ""
Dim OutFormat As String = "<%={0} %>"
DTE.ActiveDocument.Selection.Text = String.Format(OutFormat, ActiveWindowSelection)
Finally
DTE.UndoContext.Close()
End Try
End Sub
帮助程序:
Friend Function ActiveWindowSelection() As String
If DTE.ActiveWindow.ObjectKind = EnvDTE.Constants.vsWindowKindOutput Then
Return OutputWindowSelection()
End If
If DTE.ActiveWindow.ObjectKind = "{57312C73-6202-49E9-B1E1-40EA1A6DC1F6}" Then
Return HTMLEditorSelection()
End If
Return SelectionText(DTE.ActiveWindow.Selection)
End Function
Private Function HTMLEditorSelection() As String
Dim hw As EnvDTE.HTMLWindow = ActiveDocument.ActiveWindow.Object
Dim tw As TextWindow = hw.CurrentTabObject
Return SelectionText(tw.Selection)
End Function
Private Function OutputWindowSelection() As String
Dim w As Window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)
Dim ow As OutputWindow = w.Object
Dim owp As OutputWindowPane = ow.OutputWindowPanes.Item(ow.ActivePane.Name)
Return SelectionText(owp.TextDocument.Selection)
End Function
Private Function SelectionText(ByVal sel As EnvDTE.TextSelection) As String
If sel Is Nothing Then
Return ""
End If
If sel.Text.Length <= 2 Then
SelectWord(sel)
End If
If sel.Text.Length <= 2 Then
Return ""
End If
Return sel.Text
End Function
Private Sub SelectWord(ByVal sel As EnvDTE.TextSelection)
Dim leftPos As Integer
Dim line As Integer
Dim pt As EnvDTE.EditPoint = sel.ActivePoint.CreateEditPoint()
sel.WordLeft(True, 1)
line = sel.TextRanges.Item(1).StartPoint.Line
leftPos = sel.TextRanges.Item(1).StartPoint.LineCharOffset
pt.MoveToLineAndOffset(line, leftPos)
sel.MoveToPoint(pt)
sel.WordRight(True, 1)
End Sub
答案 2 :(得分:0)
我相信Code Snippets符合条款。
答案 3 :(得分:0)
我发现它直接编写一个宏,然后将其绑定到键盘命令。
我使用Tools-&gt; Macros-&gt; Macro Explorer查看其中的内容,您可以创建一个新模块并添加一个宏来注入您的代码。然后使用工具 - >自定义 - >键盘...
将其绑定到键因为它与你正在做的事情没什么不同,所以这里有一个宏来注入一个带有日期和用户名的源命令 - VBScript - 我并不认为有其他选择。
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics
Public Module Module1
Private Function GetUserName() As String
GetUserName = System.Environment.UserName
End Function
Sub InjectChangeComment()
ActiveDocument().Selection().Text = "// " + System.DateTime.Now.ToString("MM-dd-yy") + " " + GetUserName() + vbTab + vbTab + vbTab
End Sub
End Module
答案 4 :(得分:0)
HTML视图中的代码片段不起作用。它适用于下一版本的Visual Studio。我现在看一下Macro方法,或者看看其他工具是否允许HTML编辑器中的代码片段。
答案 5 :(得分:0)
一个很好的工具可以让你这样做是Resharper。您可以创建自己的模板,这些模板可以满足您的需求,但也可以使用标签进行环绕。有很多功能,价格实惠。