【发布时间】:2016-09-21 19:13:48
【问题描述】:
使用 VIM,我可以使用 Tim Pope 出色的 vim-surround 插件将光标放在字符串中并发出ds" 键盘序列以取消引用它.如何在 VS 原生或使用 Resharper 中实现等效?
-
VIM + vim-环绕:
"aaa|aaaaa"---> 按ds"--->aaa|aaaaa -
在 VS 中,我知道我可以使用正则表达式查找/替换查询:
|"aaaaaaaa"---> 按Ctrl+H---> ...查找:
"(.+?)"|'(.+?)'替换为:$1... 按
Alt+R替换下一个,我们有:aaaaaaaa(选择下一个匹配的带引号的字符串)
...但我想把它变成一个由键盘快捷键触发的宏。
我从 Visual Studio 库 中安装了 Macros for Visual Studio 扩展,但这并没有在录制宏时注册与“查找/替换”对话框的交互。
我尝试根据Using Search and Replace Macros in Visual Studio 自己编写一个宏,但它不起作用。我收到错误,例如vsFindTarget 和 vsFindPatternSyntax.vsFindPatternSyntaxRegExpr 未定义。
这是我失败的宏代码:
dte.ExecuteCommand("Edit.Replace");
dte.Find.FindWhat = "\"(.+?)\"|'(.+?)'";
dte.Find.ReplaceWith = "$1"
dte.Find.Target = vsFindTarget.vsFindTargetCurrentDocument
dte.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxRegExpr
dte.Find.ResultsLocation = vsFindResultsLocation.vsFindResultsNone
dte.Find.Action = vsFindAction.vsFindActionReplace
dte.Find.Execute()
我查看了Microsoft's documentation mentioned in this SO answer,但遇到了上述问题。让我觉得 Macros for Visual Studio 扩展 在原生 VS API 之上有它自己的 API,或者(很可能)我只是不明白。 p>
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
vsFindTarget 类位于 EnvDTE 命名空间中。您可以尝试像 EnvDTE.vsFindTarget.vsFindTargetCurrentDocument 一样访问它。
-
很遗憾,这不起作用:'EnvDTE' 未定义。
-
看来我需要的一些信息在这里:How do I start developing VSIX extensions? 和这里:How do I set keyboard shortcuts in a VSPackage?。如果我弄清楚了,我会回帖。
-
我还发现了这个:How to: Automate Text Search and Replace。我只需要把它们放在一起。
-
抱歉,我对 Visual Studio 扩展的宏没有太多经验。作为开发 vsix 扩展的替代方法,您可以使用我的 Visual Commander 运行此宏。
标签: visual-studio visual-studio-2015 macros resharper keyboard-shortcuts