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

Visual Studio 2015/ReSharper keyboard shortcut for unquoting text

使用 VIM,我可以使用 Tim Pope 的精彩 vim-surround 插件来放置光标在一个字符串中并发出 ds" 键盘序列以取消引用它。如何在 VS 中或使用 Resharper 实现等效?

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

我从 Visual Studio 图库 安装了 Visual Studio 扩展的宏,但这并没有在录制宏时注册与 Find/Replace 对话的交互。

我试着自己写了一个基于Using Search and Replace Macros in Visual Studio的宏,但是它不起作用。我收到错误,例如vsFindTargetvsFindPatternSyntax.vsFindPatternSyntaxRegExpr 未定义。

这是我失败的宏代码:

dte.ExecuteCommand("Edit.Replace");

dte.Find.FindWhat = "\"(.+?)\"|'(.+?)'";
dte.Find.ReplaceWith = ""
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,但遇到了上述问题。让我觉得 Visual Studio 扩展 的宏在原生 VS [=89= 之上有自己的 API ],或者(很可能)我只是不明白。

如有任何帮助,我们将不胜感激。谢谢!

我决定将 VimVisual Studio using Vim as an external tool 集成,但使用控制台 Vim 而不是 gVim:

  1. VS 中,转到 工具 > 外部工具... > 添加

    • 标题&Vim
    • Command: C:\[...]\usr\bin\mintty.exe(或者你有 mintty.exe 的任何地方 - 例如,它是 Git 的一部分 Windows 安装)
    • 参数"C:\[...]\usr\bin\vim.exe" +"call cursor($(CurLine),$(CurCol))" +"runtime visualstudioinvoke.vim" "$(ItemFileName)$(ItemExt)"(使用 vim.exe 的实际路径;很长的路径可能不起作用)
    • 初始目录: $(ItemDir)
    • 可选地,为方便起见,将工具设置为第一个(见第 4 点)
    • 单击确定
  2. 创建 ~/.vim/visualstudioinvoke.vim~/vimfiles/visualstudioinvoke.vim 取决于哪个有效(对我来说,前者有效)具有以下内容:


    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

上面确保 VimVS(或Vim)。检查发生在 Vim 内,但不超过每 5 秒一次。

  1. 返回 VS,转到 工具 > 选项 > 环境>文档和厚Detect when file is changed outside the environmentReload modified files unless there are unsaved changes

  2. VS中为Vim外部工具添加键盘快捷键:

    • 转到工具 > 选项 > 环境 > 键盘显示包含的命令:Tools.ExternalCommand1(假设Vim是第一个外部工具)。
    • Press shortcut keys下,我用的是[Ctrl]+[`] (反引号)组合;随心所欲。

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

中包含 vim-surround plugin