Sublime Text 2:根据需要修剪尾随空格

时间:2012-09-06 09:38:37

标签: whitespace sublimetext2 code-cleanup

我知道Sublime Text 2可以在保存时删除文件上的尾随空格。

在团队中工作并对文件进行更改时,这往往会产生巨大的差异,这会使同行代码审查变得更加繁琐。出于这个原因,我倾向于仅在我对文件进行大量更改时才进行空白区域清理,并留下空白区域,以便进行微小更改。

我想知道是否有任何命令可以对"Activate trimming on save > Save file > Deactivate trimming"以外的文件执行按需的空格修剪。

在文档和stackoverflow中搜索没有显示任何相关内容,所有链接似乎都在讨论保存时的自动修剪。

4 个答案:

答案 0 :(得分:57)

我使用这些步骤在Sublime Text:

中快速按需解决方案
  1. 查找>替换...
  2. 查找内容:[ \t]+\n
  3. 替换为:\n
  4. 全部替换
  5. 您也可以通过

    为大量文件执行此操作
    1. 查找>在文件中查找...
    2. 查找:[ \t]+\n
    3. 其中:
    4. 替换:\n
    5. 替换

答案 1 :(得分:21)

这是一种超级简单的方式,不使用任何插件或设置,适用于大多数情况。

  1. 多选并将光标移动到每行的末尾
  2. 按住CTRL-Shift,按左,右
  3. 现在应选择行尾的空格和制表符。按Delete或Backspace

    注意 - 此时此行的末尾也可以选择特殊字符(和+),而不仅仅是空格。

  4. 如何多选所有行:

    一种方法是使用鼠标中键垂直选择,然后点击结束键,如果它是一个小的选择。

    使用热键:

    1. CTRL-A(全选)
    2. CTRL-SHIFT-L(将光标放在所有选定的行上)
    3. END(转到行尾)
    4. 您还可以使用find函数查找每行中的内容,例如空格字符:

      1. \ s(使用正则表达式)
      2. 点击查找全部
      3. 按“结束”键以在每行末尾获得多个光标
      4. 示例文字:

        text and number     44  more text and a space  
        text and number 44  more text and 2 tabs        
        text and number 44  more text and no space or tab
        
        text and number 44  more text after a line feed
        

答案 2 :(得分:21)

您只需使用正则表达式删除尾随空格:

  1. 查找>替换...
  2. 找到:[^\S\r\n]+$
  3. 替换为:留空。
  4. 点击“全部替换”
  5. [^\S\r\n]+$ 正则表达式表示"至少有一个空格字符(所以空格和制表符,但不是新行,使用双重否定),后跟行尾#34 ;

    必须启用正则表达式: Enable regex is search dialog

答案 3 :(得分:13)

我在这里发现了一个问题: http://www.sublimetext.com/forum/viewtopic.php?f=4&t=4958

您可以修改包

trim_trailing_white_space.py

位于默认包目录中,这样:

import sublime, sublime_plugin

def trim_trailing_white_space(view):
    trailing_white_space = view.find_all("[\t ]+$")
    trailing_white_space.reverse()
    edit = view.begin_edit()
    for r in trailing_white_space:
        view.erase(edit, r)
    view.end_edit(edit)

class TrimTrailingWhiteSpaceCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        trim_trailing_white_space(self.view)

class TrimTrailingWhiteSpace(sublime_plugin.EventListener):
    def on_pre_save(self, view):
        if view.settings().get("trim_trailing_white_space_on_save") == True:
            trim_trailing_white_space(view)

class EnsureNewlineAtEof(sublime_plugin.EventListener):
    def on_pre_save(self, view):
        if view.settings().get("ensure_newline_at_eof_on_save") == True:
            if view.size() > 0 and view.substr(view.size() - 1) != '\n':
                edit = view.begin_edit()
                view.insert(edit, view.size(), "\n")
                view.end_edit(edit)

现在您可以将命令添加到您的键盘映射配置中:

{ "keys": ["your_shortcut"], "command": "trim_trailing_white_space" }