当前位置:  开发笔记 > 开发工具 > 正文

如何在Visual Studio 2008中自动删除尾随空格?

如何解决《如何在VisualStudio2008中自动删除尾随空格?》经验,为你挑选了6个好方法。

是否可以将Visual Studio 2008配置为在保存文件时自动删除每行末尾的空格字符?似乎没有内置选项,那么有没有可用于执行此操作的扩展?



1> Greg Ogle..:

使用正则表达式查找/替换

在查找和替换对话框中,展开查找选项,选中使用,选择正则表达式

找到什么:" :Zs#$"

替换为:""

单击全部替换

在其他编辑器(正常的正则表达式解析器)中," :Zs#$"将是" \s*$".


在VS2012中我会使用:`[^\S\r \n] +(?=\r?$)`
如果你使用制表符,`[:Zs\t]#$`是一个有用的改编.

2> arserbin3..:

CodeMaid是一个非常流行的Visual Studio扩展,可以自动执行此操作以及其他有用的清理.

下载:https://github.com/codecadwallader/codemaid/releases/tag/v0.4.3

现代下载:https://marketplace.visualstudio.com/items?itemName = SteveCadwallader.CodeMaid

文档:http://www.codemaid.net/documentation/#cleaning

我将其设置为在保存时清理文件,我认为这是默认设置.


@ arserbin3我认为你错过了Andriy的观点.我在一个巨大的开源项目中工作.我不拥有*代码 - 我正在为代码做出贡献.我不能改变项目的缩进指南.当我修改一些文件时,我希望VisualStudio删除尾随空格,而我不知道文件中的任何其他内容(标签,空格,缩进等).到目前为止,VisualStudio是*我唯一无法做到的*IDE.任何其他半生不熟的编辑器(更不用说IDE)都可以做到.我无法将CodeMaid配置为某种格式,因为格式不同.

3> 小智..:

您可以创建一个在保存后执行的宏来为您执行此操作.

将以下内容添加到您的宏的EnvironmentEvents模块中.

Private saved As Boolean = False
Private Sub DocumentEvents_DocumentSaved(ByVal document As EnvDTE.Document) _
                                         Handles DocumentEvents.DocumentSaved
    If Not saved Then
        Try
            DTE.Find.FindReplace(vsFindAction.vsFindActionReplaceAll, _
                                 "\t", _
                                 vsFindOptions.vsFindOptionsRegularExpression, _
                                 "  ", _
                                 vsFindTarget.vsFindTargetCurrentDocument, , , _
                                 vsFindResultsLocation.vsFindResultsNone)

            ' Remove all the trailing whitespaces.
            DTE.Find.FindReplace(vsFindAction.vsFindActionReplaceAll, _
                                 ":Zs+$", _
                                 vsFindOptions.vsFindOptionsRegularExpression, _
                                 String.Empty, _
                                 vsFindTarget.vsFindTargetCurrentDocument, , , _
                                 vsFindResultsLocation.vsFindResultsNone)

            saved = True
            document.Save()
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Trim White Space exception")
        End Try
    Else
        saved = False
    End If
End Sub

我已经使用了一段时间,没有任何问题.我没有创建宏,但是从ace_guidelines.vsmacros中修改它,可以通过快速谷歌搜索找到它.


请注意,这也会用两个空格替换制表符.
不幸的是,VS 2013中没有更多的宏.

4> Vyrotek..:

保存之前,您可以使用自动格式快捷键CTRL+ K+ D.



5> 小智..:

您可以使用以下三个操作轻松完成此操作:

Ctrl+ A(选择所有文字)

编辑 - >高级 - >删除水平空格

编辑 - >高级 - >格式选择

等几秒钟完成.

如果出现问题,它是Ctrl+ Z'能够的.



6> ChrisN..:

从已经给出的所有答案中取出元素,这是我最终得到的代码.(我主要编写C++代码,但根据需要很容易检查不同的文件扩展名.)

感谢所有贡献的人!

Private Sub DocumentEvents_DocumentSaved(ByVal document As EnvDTE.Document) _
    Handles DocumentEvents.DocumentSaved
    Dim fileName As String
    Dim result As vsFindResult

    Try
        fileName = document.Name.ToLower()

        If fileName.EndsWith(".cs") _
        Or fileName.EndsWith(".cpp") _
        Or fileName.EndsWith(".c") _
        Or fileName.EndsWith(".h") Then
            ' Remove trailing whitespace
            result = DTE.Find.FindReplace( _
                vsFindAction.vsFindActionReplaceAll, _
                "{:b}+$", _
                vsFindOptions.vsFindOptionsRegularExpression, _
                String.Empty, _
                vsFindTarget.vsFindTargetFiles, _
                document.FullName, _
                "", _
                vsFindResultsLocation.vsFindResultsNone)

            If result = vsFindResult.vsFindResultReplaced Then
                ' Triggers DocumentEvents_DocumentSaved event again
                document.Save()
            End If
        End If
    Catch ex As Exception
        MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Trim White Space exception")
    End Try
End Sub

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有