Sublime Text:使用一个命令创建一个包含多个子文件的文件夹

时间:2017-03-12 19:22:09

标签: macros sublimetext2 sublimetext3 sublimetext

是否可以创建一个命令来创建一个文件夹和多个具有相同名称和不同扩展名的子文件?

例如,我将打开命令并输入名称“desktop-header”

结果将是以下创建

desktop-header(文件夹)

  • 桌面header.js
  • 桌面的header.php
  • _desktop-header.sass

我一直关注BEM并最终需要手动创建所有块。

我甚至不确定要搜索什么,看看是否有答案。

谢谢!

1 个答案:

答案 0 :(得分:2)

是的,您可以在a命令中编写任意python代码。只需选择工具>开发人员>新插件... 并粘贴以下代码。这将创建一个文件夹,其中包含相对于当前视图的3个文件。

import os

import sublime
import sublime_plugin


class CreateBemFilesCommand(sublime_plugin.WindowCommand):
    def run(self):
        window = self.window
        view_path = window.active_view().file_name()
        if not view_path:
            sublime.error_message("Save your file first.")
            return
        base_folder_path, _ = os.path.split(view_path)

        def on_done(name):
            folder_path = os.path.join(base_folder_path, name)
            # add your file names
            file_names = [
                name + ".js",
                name + ".php",
                "_" + name + ".sass"
            ]
            file_paths = [
                os.path.join(folder_path, file_name)
                for file_name in file_names
            ]
            # create the folder
            os.makedirs(folder_path, exist_ok=True)
            # create the files
            for file_path in file_paths:
                with open(file_path, "a"):
                    pass
                # open the files in Sublime Text
                window.open_file(file_path)

        window.show_input_panel(
            "Input the folder name", "", on_done, None, None)

之后创建一个像这样的键绑定:

{
    "keys": ["alt+shift+b"],
    "command": "create_bem_files",
},