我在网上搜索了如何为所有文件执行sublime text命令,然后保存。我需要重构我的旧项目,其中包含诸如硬标签之类的缩进问题。
我想要的是对整个项目执行命令“expand_tabs”。我该怎么办?
答案 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"}