【问题标题】:How to use Visual Studio automatic brace completion to surround an existing block?如何使用 Visual Studio 自动大括号完成来包围现有块?
【发布时间】:2017-10-02 22:44:56
【问题描述】:

Visual Studio 自动大括号完成的问题是它忽略了我正在尝试包围整个块。出于这个原因,我习惯性地禁用它,但他们多年来一直默认它为“开启”,所以我想我会尝试找出我是否遗漏了一些关于如何有效使用 Visual Studio 的东西......不会这是我多年来第一次不知道一些基本的编辑功能。

主要有问题的情况是当我尝试包围文本时,从命令列表周围的lock (myMutex) { 之类的东西开始:

// Imagine I just typed the following line, where ^ is the cursor
lock (myMutex) {^ }  // <---  it just auto-added " }" to the end.
command1();
command2();
command3();
// where I plan to put the "}"

然后我必须按正确的次数来撤消自动格式化和错误放置的大括号命令,以便继续向下滑动光标以完成环绕。

这似乎是迄今为止常见的情况,使得大括号自动完成非常烦人。难道我做错了什么?是否有一些我可以输入的键盘序列可以合理地产生我想要的我应该使用的,我只是不知道的?还是我每次重新安装 VS 时都禁用它是正确的?

【问题讨论】:

    标签: visual-studio visual-studio-2015 ide


    【解决方案1】:

    据我所知,Visual Studio 中没有任何内置功能可用于此任务。有一些工具(不是免费的)可以极大地改善 Visual Studio 的编辑体验。但正如我所说,它们不是免费的,有时它们也会减慢 Visual Studio 的基本操作。

    但是你可以创建一个SurroundsWithsn-p。一个小的自动化向导,您也可以在 Visual Studio 2015 中检索并执行它,右键单击您希望用大括号括起来的选定代码块。

    • 首先是下载Snippet Designer 使用 工具菜单中的扩展和更新。
    • 然后打开菜单 FILE -> NEW -> FILE 并选择 Snippet Designer 然后是代码片段。
    • 在片段编辑器中添加这些行

      {
          $selected$ $end$ 
      }
      
    • 然后在片段框中输入一些文本,然后选择 C# 作为语言。

    • 保存片段,记下保存的位置。
    • 现在使用您选择的任何文本编辑器打开代码段并更改 &lt;SnippetType&gt; 的值与

      <SnippetType>SurroundsWith</SnippetType>
      
    • 保存文件。

    通常,此时,Visual Studio 应该能够立即识别新的 sn-p,但无论如何您都可以关闭并重新打开 IDE。

    现在如果你选择一个代码块,右击并选择Surrounds With (Ctrl+KS), MyCodeSnippets 然后你命名的sn-p你的代码会缩进

    如果您有兴趣,可以在 MSDN 上的此页面上找到有关 Snippets 功能的更多详细信息:Creating Code Snippets

    【讨论】:

    • 谢谢,使用这种方法,我可能会做 shift+downdowndown 来选择,然后我需要为 sn-p 打热键。但是,我刚刚发现 return,alt+downdowndown 实际上会在代码中以极少的击键次数将右括号向下移动到小块中,但是我需要在之后手动触发格式以使其均匀。
    • 哦,天哪,我不知道,是的,所需的击键或多或少是相同的。但是我希望答案对其他任务也有用。我经常使用 sn-ps。
    【解决方案2】:

    我在AutoHotKey 的帮助下解决了这个问题。我已经将这个程序用作文本扩展器,我只是添加了:

    send, {{}{enter}{}}
    

    “扩展”一个开放的大括号,而它的封闭对应物在一个新的行上。然后我向下到那个封闭的括号,并在我想要包围的块之后用 ALT+DOWN 移动整行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      • 2012-06-18
      • 2012-08-24
      • 1970-01-01
      • 2013-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多