在Visual Studio中,有什么方法可以在编辑器中以编程方式修改选定的编辑器文本?代码段?宏?

时间:2018-12-29 05:39:00

标签: c# visual-studio macros code-snippets

我希望能够突出显示一段文字并删除任何“;”在突出显示的部分中。

我写了一个“带有代码段的包围”来封装突出显示的文本,但也想通过务实的方式修改该文本,不确定如何操作。

我使用Visual Studio中的“代码段设计器”扩展程序来创建代码段。

我希望突出显示的文本" RunMethod1(var1); "将被转换为 ".Then(() => RunMethod1(var1) ) ",即不使用分号。

2 个答案:

答案 0 :(得分:0)

您可以对Visual Commander使用以下命令来删除任何“;”在选择中添加“ Then”(语言:C#)

public class C : VisualCommanderExt.ICommand
{
    public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package)
    {
        EnvDTE.TextSelection ts = DTE.ActiveDocument.Selection as EnvDTE.TextSelection;
        ts.Text = ".Then(() =>" + ts.Text.Replace(";", "") + ") ";
    }
}

答案 1 :(得分:0)

AutoHotKey能够完成我所需要的工作,并且在掌握了语法之后被证明是一个非常强大的工具。感谢您提出的Caius Jard的建议。

这是我用来解决问题的代码。

  

#p ::;按住'WindowsKey'并按'P'    ConvertToPromise()

     

返回

     

; ---------------------------------------------- -    ConvertToPromise()
   {

     

oCB:=剪贴板;本地var保存原始剪贴板内容     剪贴板:=
    发送^ c
    ClipWait,1
    nCB:=剪贴板;获取当前选定的文本。
    mnCB:= EraseSemiColon(nCB)

     

剪贴板:= mnCB
    发送.Then(()=> ^ v)
    睡觉100
    剪贴板:= oCB;恢复剪贴板的原始值。

     

}

     

; ---------------------------------------------- ---    EraseSemiColon(stringText)
     {
     strVar:= stringText
     ModifySt:=      StrReplace(strVar,“`;”,“”)

     

返回,%modifiedSt%
     }