vs2010自动补齐双引号

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

让vs2010自动完成双引号
广大码奴们,敲码时遇到需要输入双引号,方括号,圆括号是不是很烦躁,
如果有一种只需要输入一个左边括号,就可以自动补齐另一边括号,并且可以自
动将光标定位到括号中间,输入完毕后又可以方便的跳出括号的工具,那效率会
不会高很多。

百度了很久,都没有什么好的解决方案,不是装VA就是resharper插件,
但是也只是可以自动补齐和定位而已,想要跳出仍然需要利用键盘上的右方向
键,手部移动幅度很大有木有,完全打乱了敲码的节奏,破坏了忧郁的气质,好
吧,我之前一直都用鼠标来的。

找不到现成的方法,只能自己动手丰衣足食了。

突然发现 virtual studio是支持宏操作的,于是楼主灵光一闪,想到了利用宏来自动实现上述功能的方法,不多说,直接上图。

1.工具-宏-记录TemporaryMacro
2. 接下来就不用我多说了,和office中的一样,录制宏,比如你可以在文本编辑窗口输入“(”,“)”,“<—”(方向键),然后停止录制宏。

这样我们就有了可以自动完成双引号并定位到中间位置的快捷操作,依次可以得到自动完成圆括号,方括号等等的宏。

这是我自己录制的7个宏。

3. 接下来我们还要把这些宏和具体的快捷键绑定起来,这样我们只要在键盘上敲打快捷键就可以自动完成
在“显示命令包含”中输入“宏”,会自动显示你刚刚录制的所有宏,选择一个,设置快捷键,注意设置完要点“分配”
这样一个宏就设置完了,接下来把你录制的所有宏都设置一个你认为方便你操作的快捷键即可。

4.接下来和大家分享一下我的设计方案。

我选取了H,J,K,L,N,M,Alt,空格这8个元素,她们在键盘上的位置都在右手可以控制的范围内,非常灵活便捷,不想录制的朋友也可以直接粘贴我设置好的宏代码。

Alt+H : 删除,即backspace
Sub删除()
DTE.ActiveDocument.Selection.DeleteLeft()
End Sub
Alt+J:输入双引号并定位到中间
Sub打出双引号()
DTE.ActiveDocument.Selection.Text = """"""
DTE.ActiveDocument.Selection.CharLeft()
End Sub
Alt+K:输入圆括号并定位到中间
Sub打出括号()
DTE.ActiveDocument.Selection.Text = "()"
DTE.ActiveDocument.Selection.CharLeft()
End Sub
Alt+L:输入方括号并定位到中间
Sub打出方括号()
DTE.ActiveDocument.Selection.Text = "[]"
DTE.ActiveDocument.Selection.CharLeft() End Sub
Alt+N:撤销
Sub撤销()
DTE.ExecuteCommand("Edit.Undo")
End Sub
Alt+M:反撤销
Sub反撤销()
DTE.ExecuteCommand("Edit.Redo")
End Sub
Alt+空格:自动跳出括号
Sub跳出()
DTE.ActiveDocument.Selection.CharRight()
End Sub
Ps:
1.
所有的vs编辑器都支持宏,所以这个方法可以用在vs各个版本上,你也可以依此在office上操作
2.事实上由于升级的微软补丁冲突,很多vs的宏功能已经被破坏,是无法运行任何宏的。

基本都是在安装KB2898869、KB2901126、KB2898857等更新后宏停止运行。

查看了一下提供的解决方案,修改宏配置文件,VS2010的配置文件路径为:C:\Program Files (x86)\Common Files\microsoft shared\VSA\9.0\VsaEnv目录下的vsmsvr10.exe.config,在RunTime配置节添加配置项:
<AllowDComReflection enabled="1"/>即可
32bit和64bit的windows,以及vs不同版本的路径和配置文件如下
在之前7个宏的基础上再新加8个宏,一共15个,基本涵盖了所有常用的操作。

alt+e:光标向上
alt+d:光标向下
alt+s:光标向左
alt+f:激活文件窗口,有时由于鼠标操作或别的问题代码页面会失去焦点,这个快捷键可以让光标重新出现在代码文件上
alt+i:复制代码段,指定行号,当前光标位置和指定行之间代码全部选定
alt+g:指定行号,光标自动跳到改行
alt+r:将选定代码段注释
alt+t:将注释代码段解开
15个快捷键全部由alt带动,s,e,d,f,r,t,g,h,j,k,l,n,m,i,空格充分考虑手指的摆动幅度,几乎可以保证最大限度的连续操作。

并不想将vs真的改造成vim,简单,甚好。

另外vs的宏模块全部可以导出,快捷键的绑定配置文件也可以导出,这样,把这两个文件上传到你的微云或百度云盘,就可以保证你的随时随地使用了。

15Macros.vb( 宏模块文件,可导入)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Option Strict Off
Option Explicit Off
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports System.Diagnostics
Public Module RecordingModule
Sub 打出括号()
DTE.ActiveDocument.Selection.Text = "()"
DTE.ActiveDocument.Selection.CharLeft()
End Sub
Sub 向右()
DTE.ActiveDocument.Selection.CharRight()
End Sub
Sub 打出方括号()
DTE.ActiveDocument.Selection.Text = "[]"
DTE.ActiveDocument.Selection.CharLeft()
End Sub
Sub 打出双引号()
DTE.ActiveDocument.Selection.Text = """"""
DTE.ActiveDocument.Selection.CharLeft()
End Sub
Sub 删除()
DTE.ActiveDocument.Selection.DeleteLeft()
End Sub
Sub 撤销()
DTE.ExecuteCommand("Edit.Undo")
End Sub
Sub 反撤销()
DTE.ExecuteCommand("Edit.Redo")
End Sub
Sub 向左()
DTE.ActiveDocument.Selection.CharLeft()
End Sub
Sub 向上()
DTE.ActiveDocument.Selection.LineUp()
End Sub
Sub 向下()
DTE.ActiveDocument.Selection.LineDown()
End Sub
Sub 激活()
ActiveDocument.Activate()
End Sub
Sub 转行()
Dim command As Integer
command = InputBox("Enter a number: ")
DTE.ActiveDocument.Selection.GotoLine(command)
End Sub
Sub 复制()
Dim textSelection As EnvDTE.TextSelection
Dim textSelectionPointSaved As TextPoint
Dim command As Integer
textSelection = DTE.ActiveWindow.Selection
textSelectionPointSaved = textSelection.ActivePoint.CreateEditPoint() command = InputBox("Enter a number: ")
selection = ActiveDocument.Selection
d = selection.TopPoint.Line
If ((d - command) > 0) Then
For arrIdx = 1 To (d - command)
selection.LineUp(True)
Next
textSelection.StartOfLine()
ElseIf ((d - command) < 0) Then
For arrIdx = 1 To (command - d)
selection.LineDown(True)
Next
textSelection.EndOfLine()
Else
textSelection.StartOfLine()
textSelectionPointSaved = textSelection.ActivePoint.CreateEditPoint()
textSelection.EndOfLine()
End If
textSelection.MoveToPoint(textSelectionPointSaved, True) End Sub
Sub 注释()
DTE.ExecuteCommand("mentSelection")
End Sub
Sub 解开注释()
DTE.ExecuteCommand("Edit.UncommentSelection")
End Sub
End Module。

相关文档
最新文档