111

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

在团队中工作并对文件进行更改时,这往往会产生巨大的差异,从而使同行代码审查更加麻烦。出于这个原因,我更喜欢只在我对文件进行巨大更改时才进行空白清理,并将空白保留为较小的更改。

我想知道除了"Activate trimming on save > Save file > Deactivate trimming".

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

4

5 回答 5

81

我使用这些步骤在 Sublime Text 中快速按需解决方案:

  1. 查找 > 替换...
  2. 找什么:[ \t]+\n
  3. 用。。。来代替:\n
  4. 全部替换

您也可以通过以下方式对大量文件执行此操作

  1. 查找 > 在文件中查找...
  2. 寻找:[ \t]+\n
  3. 在哪里:
  4. 代替:\n
  5. 代替
于 2013-10-15T21:27:56.617 回答
74

注意:使用这个插件会使 Sublime Text 明显变慢

我为此使用TrailingSpaces插件。

突出显示尾随空格并立即删除它们。

ST2 提供了一种在文件保存时自动删除尾随空格的方法。根据您的设置,仅突出显示它们和/或手动删除它们可能更方便。这个插件提供了!

用法:单击“编辑/尾随空格/删除”。

要添加键绑定,请打开“首选项/键绑定 - 用户”并添加:

{ "keys": ["ctrl+alt+t"], "command": "delete_trailing_spaces" }
于 2012-09-10T09:11:48.567 回答
40

您可以简单地使用正则表达式来删除尾随空格:

  1. 查找 > 替换...
  2. 找什么:[^\S\r\n]+$
  3. 替换为:留空。
  4. 点击“全部替换”

[^\S\r\n]+$是正则表达式,表示“至少一个空格字符(所以空格和制表符,但不是换行符,使用双重否定),然后是行尾”

必须启用正则表达式: 启用正则表达式是搜索对话框

于 2016-10-24T08:48:35.060 回答
23

这种方法并不完美,但不使用插件或设置,并且在大多数情况下都有效。

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

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

如何多选所有行:

一种方法是使用鼠标中键垂直选择,如果选择很小,请按结束键。

使用热键:

  1. CTRL-A(全选)
  2. CTRL-SHIFT-L(将光标放在所有选定的行上)
  3. END(转到行尾)

您还可以使用 find 函数来查找将在每一行中出现的内容,例如空格字符:

  1. \s(使用正则表达式)
  2. 单击查找全部
  3. 按“结束”键在每行末尾获取多个光标

示例文本:

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
于 2013-05-08T23:18:02.553 回答
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" }
于 2012-09-06T11:54:17.993 回答