回答

11

只是找到了一个很好的免费插件:Menees VS Tools 2012(或2010 ver) - 正是这么做的和几个文字技巧。当我安装它时,有一些次要的负面影响,但在评论页面留下评论后,它在几天内得到修复。 Waay去! =)

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

22

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

您不一定需要编写一个VS插件才能做到这一点:Visual Studio中内置了宏。要开始使用,请使用工具,宏和记录临时宏。

这里有一个“排序行”命令我入侵一起基于该代码记录临时宏给我:

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 
+5

您正在使用TextSelection.Text属性更改文本。这通常是执行速度非常慢的原因。甚至可能需要几秒钟的时间。更好的方法是使用TextSelection.Insert和Delete方法。我没有测试它,但我建议替换线: Selection.Text = String.Join(Environment.NewLine,Lines) 2行: Selection.Delete Selection.Insert(String.Join(Environment.NewLine,行)) 然后,您可以将宏放在工具栏或菜单(http://www.helixoft.com/blog/archives/7)上或将键快捷方式分配给它(http://www.helixoft.com/blog /档案/ 8) – 2010-07-28 10:45:26

+2

@彼得,谢谢。我没有花很长时间写这篇文章 - 如果你给OP增加一个答案,我会投票支持 – 2010-07-28 10:51:15

+0

Peter的建议将我的运行时间从30秒改变为几乎瞬间,并且也停止了一些生成的垃圾行。 – 2011-09-27 13:47:34

5

您可以将代码复制到文本崇高,选择部分代码和按F9(或去编辑>排序行)。然后,您可以将其复制回Visual Studio。

+0

好主意。与emacs:标记区域相同,然后Alt-X分类线 – user829755 2016-03-08 15:47:46

2

我亲自使用Mads Kristensen的Web Essentials扩展名。 您只需选择要排序的行和Alt + 3或Alt + 4(asc/desc)。

13

一个不错的附加元件的Visual Studio是Code Maid

您选择一些线,然后从上下文菜单中选择“排序行”

enter image description here

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

enter image description here

+0

编辑C++源文件时,这对于VisualStudio 2013上的Code Maid 10.2不起作用。选定的行保持不变。 – Eponymous 2017-02-01 21:29:39

相关问题