1

我在网上搜索了如何为所有文件执行 sublime text 命令然后保存。我需要重构有缩进问题的旧项目,例如硬制表符。

我想要的是对整个项目执行命令“expand_tabs”。我该怎么做?

4

1 回答 1

5

更新:我已经把它变成了一个记录良好的 ST 插件。在这里找到它:https ://github.com/maliayas/SublimeText_TabToSpaceConverter


我写了一个小插件来做到这一点。将此代码放在“Packages/User/BatchTabToSpaceFixer.py”下:

import sublime
import sublime_plugin


class BatchTabToSpaceFixerCommand(sublime_plugin.TextCommand):
    def run(self, view):
        self.run_all_views()
        # self.run_current_view()

    def is_enabled(self):
        return len(sublime.active_window().views()) > 0

    def run_all_views(self):
        for view in sublime.active_window().views():
            self.process(view)

    def run_current_view(self):
        self.process(sublime.active_window().active_view())

    def process(self, view):
        # Previous tab size
        view.run_command('set_setting', {"setting": "tab_size", "value": 3})

        # This trick will correctly convert inline (not leading) tabs.
        view.run_command('expand_tabs', {"set_translate_tabs": True})  # This will touch inline tabs
        view.run_command('unexpand_tabs', {"set_translate_tabs": True})  # This won't

        # New tab size
        view.run_command('set_setting', {"setting": "tab_size", "value": 4})

        view.run_command('expand_tabs', {"set_translate_tabs": True})

然后打开您要处理的项目文件。该插件将处理打开的选项卡并使它们变脏。一旦您认为一切正常,您可以执行“全部保存”。

不要忘记在代码中编辑您以前和新的标签大小。例如,我的情况是从 3(作为制表符)到 4(空格)。在这种情况下,此插件将正确保留使用制表符进行的垂直内联(非前导)对齐。

如果您愿意,您可以为此作业分配快捷键:

{"keys": ["ctrl+alt+t"], "command": "batch_tab_to_space_fixer"}
于 2013-07-29T13:07:29.463 回答