Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 用于取消引用文本的Visual Studio 2015/ReSharper键盘快捷键_Visual Studio_Visual Studio 2015_Macros_Resharper_Keyboard Shortcuts - Fatal编程技术网

Visual studio 用于取消引用文本的Visual Studio 2015/ReSharper键盘快捷键

Visual studio 用于取消引用文本的Visual Studio 2015/ReSharper键盘快捷键,visual-studio,visual-studio-2015,macros,resharper,keyboard-shortcuts,Visual Studio,Visual Studio 2015,Macros,Resharper,Keyboard Shortcuts,有了VIM,我可以使用Tim Pope奇妙的VIM环绕插件将光标放在字符串中,并发出ds”键盘序列以取消引用。如何在VS本机或Resharper中实现等效功能 VIM+VIM环绕声: “aaa | aaaaa”-->按ds”-->aaa | aaaaa 在VS中,我知道我可以使用正则表达式查找/替换查询: |“aaaaaaa”-->按Ctrl+H--> 查找:“(.+?)”“|”(.+?)” 替换为:$1 。。。按Alt+R替换下一个,我们有: aaaaaa (选择下一个匹配的带引号的字符串)

有了VIM,我可以使用Tim Pope奇妙的VIM环绕插件将光标放在字符串中,并发出
ds”
键盘序列以取消引用。如何在VS本机或Resharper中实现等效功能

  • VIM+VIM环绕声:

    “aaa | aaaaa”
    -->按
    ds”
    -->aaa | aaaaa

  • 在VS中,我知道我可以使用正则表达式查找/替换查询:

    |“aaaaaaa”
    -->按
    Ctrl+H
    -->

    查找
    “(.+?)”“|”(.+?)”
    替换为:
    $1

    。。。按
    Alt+R
    替换下一个,我们有:
    aaaaaa
    (选择下一个匹配的带引号的字符串)

。。。但我想把它变成一个由键盘快捷键触发的宏

我从VisualStudioGallery安装了Visual Studio扩展的宏,但录制宏时,这不会注册与“查找/替换”对话框的交互

我试着自己写一个宏,但是没有用。我收到了一些错误,例如未定义
vsFindTarget
vsfindpatternsynx.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()
我看了,但我得到的问题如上所述。让我觉得VisualStudio扩展的宏在原生VS API的基础上有自己的API,或者(很可能)我就是不明白

任何帮助都将不胜感激。谢谢

我决定将Vim与Visual Studio集成,但与控制台Vim而不是gVim集成:

  • 在VS中,转到工具外部工具…添加

    • 标题
      &Vim
    • 命令
      C:\[…]\usr\bin\mintty.exe
      (或您拥有的
      mintty.exe
      ——例如,它是Git for Windows安装的一部分)
    • 参数
      “C:\[…]\usr\bin\vim.exe”+“调用游标($(CurLine),$(CurCol))”+“运行时visualstudioinvoke.vim”“$(ItemFileName)$(ItemExt)”
      (使用到
      vim.exe的实际路径;很长的路径可能无法工作)
    • 初始目录
      $(ItemDir)
    • (可选)为方便起见,将工具设置为第一个(参见第4点)
    • 单击确定
  • 创建
    ~/.vim/visualstudioinvoke.vim
    ~/vimfiles/visualstudioinvoke.vim
    ,具体取决于哪种方法有效(对于我来说,前者有效),并包含以下内容:

  • 如果在VS(或Vim以外的任何地方)中更改了文件,上述方法确保Vim自动重新加载该文件。光标在Vim内移动时进行检查,但检查频率不超过每5秒一次

  • 回到VS,转到工具选项环境文档和厚
    检测环境外的文件何时更改
    重新加载修改过的文件,除非有未保存的更改

  • 在VS中为Vim外部工具添加键盘快捷键:

    • 转到工具选项环境键盘显示包含以下内容的命令:
      工具。ExternalCommand1
      (假设Vim是第一个外部工具)
    • 在按下快捷键下,我使用了组合键;用你喜欢的任何东西

  • 就这样。现在,您可以在Vim中快速打开在VS中查看的文件,并保留光标位置。保存的更改也会在编辑器之间自动同步。对于文本取消引用,请确保Vim中有。

    vsFindTarget类位于EnvDTE命名空间中。您可以尝试像EnvDTE.vsFindTarget.vsFindTargetCurrentDocument一样访问它。不幸的是,这不起作用:“EnvDTE”未定义。我需要的一些信息似乎在这里:这里:。如果我弄明白了,我会发回的。我还发现了这个:。我只需要把它们放在一起。对不起,我对Visual Studio扩展的宏没有太多经验。作为开发vsix扩展的替代方案,您可以使用我的VisualCommander运行此宏。我现在已经使用了10天,它的效果非常好。我改变的一件事是启动Vim的按键组合。现在是[Ctrl]+[Alt]+[Shift]+[v],它似乎与任何东西都没有冲突。因为我没有收到其他完整的答案,我接受这个作为选择的解决方案。
    
        set autoread
        autocmd CursorMoved,CursorMovedI * call CheckTime()
    
        " How many seconds to wait between file timestamp checks
        let s:check_time_delay=5
        let s:last_check_time=reltime()
    
        function CheckTime()
          if(reltime(s:last_check_time)[0] > s:check_time_delay)
            let s:last_check_time=reltime()
            checktime %
          endif
        endfunction