如何对sublime文本项目中的所有文件执行命令?

时间:2013-07-29 03:22:08

标签: sublimetext2 indentation sublimetext sublimetext3

我在网上搜索了如何为所有文件执行sublime text命令,然后保存。我需要重构我的旧项目,其中包含诸如硬标签之类的缩进问题。

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

1 个答案:

答案 0 :(得分:5)

我写了一个小插件来做到这一点。将此代码放在“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"}