我在网上搜索了如何为所有文件执行 sublime text 命令然后保存。我需要重构有缩进问题的旧项目,例如硬制表符。
我想要的是对整个项目执行命令“expand_tabs”。我该怎么做?
我在网上搜索了如何为所有文件执行 sublime text 命令然后保存。我需要重构有缩进问题的旧项目,例如硬制表符。
我想要的是对整个项目执行命令“expand_tabs”。我该怎么做?
更新:我已经把它变成了一个记录良好的 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"}