从Visual Studio上下文菜单中排序选定的文本

aba*_*hev 39 sorting visual-studio-addins visual-studio-2010 visual-studio

目前VS有一个非常有用的功能:排序使用(C#).

我希望任何随机文本具有相同的功能,例如 - 配置文件中的XML节点.

实现起来有多复杂?VS插件,对吗?是否可以调用一些用于排序使用的VS API?

The*_*ign 43

对比 2019 年对比 2022 年

  1. 选择线路。最后选定的行是光标所在的位置 - 即使该行为空并且没有可见的选择,也会考虑该行。
  2. Shift + Alt + L,Shift + Alt + S => 升序排序。
  3. Shift + Alt + L,Shift + Alt + S(相同选择相同键)=> 降序排序。

该命令也可以从菜单(@sharpener)调用:编辑| 高级| 排序线

此快捷方式适用于最常用的方案:Visual C++ 6 键盘映射方案(以及可能的其他方案)。您可以在“选项”|“选项”中检查您的方案。键盘| 应用以下附加键盘映射方案:

您可以在选项 |中查看快捷方式。键盘| 显示命令包含:Edit.SortLines | 所选命令的快捷方式:

  • 更多的赞成票,它现在内置到 VS 中,这就是大多数人会寻找的!(谢天谢地,这个答案显示在谷歌*内*。) (4认同)
  • 或者:`编辑| 高级| 如果快捷方式被分配给其他东西,则对行进行排序... (3认同)

Tim*_*son 24

编辑:请注意,此解决方案在VS2013或更高版本上不起作用,因为删除了对宏的支持.

您不一定需要编写VS插件来执行此操作:Visual Studio内置了宏.要开始使用,请使用工具,宏,记录临时宏.

这是一个'Sort Lines'命令,我根据Record Temporary Macro给我的代码一起入侵:

Imports System
Imports EnvDTE

Public Module TimModule
    Sub SortLines()
        Dim Selection As TextSelection = DTE.ActiveDocument.Selection
        Dim Lines() As String = Selection.Text.Replace(Environment.NewLine, Chr(13)).Split(Chr(13))
        Array.Sort(Lines)
        DTE.UndoContext.Open("Sort Lines")
        ' Edit - see comments
        ' Selection.Text = String.Join(Environment.NewLine, Lines)
        Selection.Delete
        Selection.Insert(String.Join(Environment.NewLine, Lines)) 
        DTE.UndoContext.Close()
    End Sub
End Module
Run Code Online (Sandbox Code Playgroud)

  • VS 2012已经放弃了对宏的支持. (9认同)
  • 您正在使用TextSelection.Text属性更改文本.这通常是执行速度很慢的原因.可能需要几秒钟.更好的方法是使用TextSelection.Insert和Delete方法.我没有测试过,但我建议用2行替换line:Selection.Text = String.Join(Environment.NewLine,Lines):Selection.Delete Selection.Insert(String.Join(Environment.NewLine,Lines))然后您可以将宏放在工具栏或菜单上(http://www.helixoft.com/blog/archives/7)或为其指定快捷键(http://www.helixoft.com/blog/archives/8) (5认同)
  • @Peter,谢谢.我没有花太多时间写这篇文章 - 如果你在OP上添加一个答案,我就会投票 (2认同)

Kna*_*bax 19

一个很好的Visual Studio AddOn是Code Maid

您选择一些行并从上下文菜单"排序行"中选择

在此输入图像描述

瞧,你的行按字母顺序很好地排序:

在此输入图像描述


Yur*_*rik 14

刚刚找到一个好的免费插件:Menees VS Tools 2012(或2010版本) - 正是这样做以及更多的文字技巧.我安装它时有一些小的负面影响,但在评论页面上发表评论后,它在几天内得到修复.快走吧!=)

现在有一个2017版本:Menees VS Tools 2017


小智 7

这仍然出现在搜索的顶部,所以我将添加这个最新的解决方案。如果您正在运行当前的 VS Code(为什么不呢?),您可以通过按 ctrl-shift-p(Mac 是 cmd-shift-p)并在后续搜索中键入“sort”来使用内置排序器盒子。有很多选择。


Wil*_*iam 6

您可以将代码复制到Sublime Text,选择代码部分并按F9(或转到编辑>排序行).然后,您可以将其复制回Visual Studio.


小智 5

我个人使用的是Mads Kristensen 的Web Essentials扩展。您只需选择要排序的行以及Alt + 3或Alt + 4(asc / desc)。