Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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 从VisualStudio上下文菜单中对选定文本排序_Visual Studio_Visual Studio 2010_Sorting_Visual Studio Addins - Fatal编程技术网

Visual studio 从VisualStudio上下文菜单中对选定文本排序

Visual studio 从VisualStudio上下文菜单中对选定文本排序,visual-studio,visual-studio-2010,sorting,visual-studio-addins,Visual Studio,Visual Studio 2010,Sorting,Visual Studio Addins,目前VS有一个非常有用的特性:使用C进行排序 我希望任何随机文本都具有相同的功能,例如配置文件中的XML节点 实现这一点有多复杂?对艾丁,对吗?是否可以调用某些用于排序的VS API?编辑:请注意,此解决方案不适用于VS2013或更高版本,因为已删除对宏的支持 您不一定需要编写VS加载项来实现这一点:VisualStudio内置了宏。要开始,请使用工具、宏、录制临时宏 下面是我根据Record Temporary宏给我的代码拼凑的一个“排序行”命令: Imports System Imports

目前VS有一个非常有用的特性:使用C进行排序

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

实现这一点有多复杂?对艾丁,对吗?是否可以调用某些用于排序的VS API?

编辑:请注意,此解决方案不适用于VS2013或更高版本,因为已删除对宏的支持

您不一定需要编写VS加载项来实现这一点:VisualStudio内置了宏。要开始,请使用工具、宏、录制临时宏

下面是我根据Record Temporary宏给我的代码拼凑的一个“排序行”命令:

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

刚刚找到一个很好的免费插件:或者-就是这样,还有一些文字技巧。当我安装它时,有一些小的负面影响,但在评论页面上留下评论后,它在几天内得到了修复。走吧=


现在有一个2017版:

您可以将代码复制到升华文本中,选择代码部分并点击F9或进入编辑>排序行。然后您可以将其复制回Visual Studio。

我个人正在使用Mads Kristensen的扩展。
您只需选择要排序的行,然后按Alt+3或Alt+4 asc/desc进行排序。

Visual Studio的一个不错的插件是

您可以选择一些行,然后从关联菜单中选择“排序行”

瞧,你的台词按字母顺序排列得很好:


这仍然出现在搜索的顶部,所以我将添加这个最新的解决方案。如果您正在运行当前的VS代码,为什么不运行呢?通过点击ctrl-shift-p Mac is cmd-shift-p并在后续搜索框中键入sort,可以使用内置分拣机。有很多选择。

与2019年相比:

选择行。最后选定的行是光标所在的位置-即使该行为空且没有可见的选择,也会考虑该行。 Shift+Alt+L,Shift+Alt+S=>升序排序。 Shift+Alt+L,Shift+Alt+S相同选择相同键=>降序排序。
您正在使用TextSelection.Text属性更改文本。这通常是执行非常缓慢的原因。甚至可能需要几秒钟。更好的方法是使用TextSelection.Insert和Delete方法。我还没有测试过它,但我建议将行:Selection.Text=String.JoinEnvironment.NewLine,行替换为2行:Selection.Delete Selection.InsertString.JoinEnvironment.NewLine,行,然后您可以将宏放在工具栏或菜单上,或者为其指定快捷键@Peter,谢谢。我没有花太多时间写这篇文章-如果你给OP添加一个答案,我会投它一票upPeter的建议将我的运行时间从大约30秒改为几乎瞬间,还阻止了一些垃圾线的生成。非常有用,我建议稍作修改,以避免选择结束时的空行与结果混合,以及仅选择一行的一部分时的奇怪行为:Dim count As Integer=行。Length If Lines.GetValuecount-1=然后count=count-1如果count<2,则退出Sub Array.SortLines,0,countVS 2012已放弃对宏的支持。好主意。与Emacs相同:标记区域,然后ALT-X排序LeaseAdLy,这就是我所做的…但是希望跳过复制粘贴:对于VisualStudio 2013中的代码MAID 10.2,当编辑C++源文件时,这是不起作用的。选定的行保持不变。快速和脏:复制到记事本++,选择“编辑>行操作”,单击要排序的方式,然后复制回Visual Studio或:编辑|高级|排序行(如果快捷方式已指定给其他内容)。。。