ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

动态命令

仅创建适用于本地环境的可移植Sublime配置。

详细信息

安装

  • 总数 205
  • Windows 139
  • Mac 40
  • Linux 26
8月6日 8月5日 8月4日 8月3日 8月2日 8月1日 7月31日 7月30日 7月29日 7月28日 7月27日 7月26日 7月25日 7月24日 7月23日 7月22日 7月21日 7月20日 7月19日 7月18日 7月17日 7月16日 7月15日 7月14日 7月13日 7月12日 7月11日 7月10日 7月9日 7月8日 7月7日 7月6日 7月5日 7月4日 7月3日 7月2日 7月1日 6月30日 6月29日 6月28日 6月27日 6月26日 6月25日 6月24日 6月23日
Windows 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mac 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Linux 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

README

源代码
bitbucket.​org

动态Sublime命令

此软件包允许您添加动态Sublime配置。动态意味着,您不需要将这些配置放入软件包文件夹,而是可以通过项目来管理它们。动态命令对文件视图有效,这些文件与配置或配置子文件夹位于同一文件夹中。

您可以使用以下文件类型添加命令

  • 命名为 sublime_commands.py 的Python文件
  • 命名为 local.sublime-commands 的sublime-commands文件
  • 命名为 sublime.sublime 的本地目录,包含任何Sublime配置(片段、映射等)

如果您打开了视图,则会在这些文件中查找当前视图的文件文件夹及其父文件夹,直到打开的文件夹(或根文件夹)。此外,还会添加在打开的文件夹中找到的所有命令文件中的所有命令。所有找到的命令都将合并并提供为当前视图中的命令。

这样,您可以按照自己的意愿添加项目特定的命令。

在命令标题中您可以使用以下变量(例如,我们有一个命令文件 /path/to/sublime_commands.py)

变量 描述 示例
${cmdfile} 命令文件的完整路径 /path/to/sublime_commands.py
${cmdfilename} 命令文件的名称 sublime_commands.py
${cmddir} 命令文件所在目录的路径 /path/to
${cmddirname} 命令文件所在目录的名称 to

本地配置目录

您可以在任何位置添加名为sublime或.sublime的目录。如果您编辑目录树中较低位置的文件,则这些文件夹中设置的所有配置均可用。这样,您可以创建本地或特定于项目的快捷方式、片段等。

Sublime命令文件

此机制允许您添加包含 sublime 命令的文件(位于包目录之外),并创建特定于项目或特定于文件夹的命令。

这些文件最为便携,但灵活性并不高。

这样的文件必须命名为 local.sublime-commands.sublime-commands

Python 文件

如果您创建一个名为 sublime_commands.py 的文件,它将被解释为 sublime 命令。这意味着会寻找 sublime_commands 模块提供的 SublimeCommands 类的所有全局实例。请使用装饰器和工厂函数 sublime_command 创建 sublime 命令。

您的 sublime_commands.py 应以以下声明开始

from sublime_commands import *

在命令面板中创建一个显示为 "hello_world" 的命令

@sublime_command
def hello_world(output):
    output.write("hello world")

在命令面板中创建一个显示为 "Hello World" 的命令

@sublime_command("Hello World")
def hello_world2(output):
    output.write("Hello World.")

创建一个提示用户输入 "user" 的命令

@sublime_command("Hello ??")
def greetings_to(output, user="Mr. Snicket"):
    output.write("Hello %s" % user)

创建一个执行一个小脚本的命令

shell_command1 = sublime_command("Hello World", """
    echo "Hello World"
    echo "Hello outside"
    """)

同样的,带有默认值 "Mr. Snicket" 的输入

shell_command2 = sublime_command("Hello World", """
    echo "Hello World"
    echo "Hello ${user}"
    """,
    input = dict(user = "Mr. Snicket")
    )

您可以创建一个工厂函数,它将一个符号添加到全局变量中

def shell_factory(name, *args, **kargs):
    G = globals()
    G[make_symbol(name)] = sublime_command(name, *args, **kargs)

然后创建 shell 命令会变得容易许多

shell_factory("Hello World 2", """
    echo "Hello World"
    echo "Hello outside"
    """)

除了从输入中获取的变量之外,您还可以使用以下变量::hidden: shell 命令

  • ${filename} - 当前视图的文件名
  • ${filedir} - 当前视图中文件的目录
  • ${filedirname} - 当前视图中文件的目录
  • ${cmdfile} - 包含此命令的命令文件的目录
  • ${cmddir} - 命令文件目录的目录
  • ${cmddirname} - 命令文件目录的目录
  • ${cwd} - 当前工作目录

以下是一些在 Windows 上具有特殊行为的命令

shell_command2 = sublime_command("Platform Specific", """
    echo "this is done on all non-windows platforms"
    """,
    windows = """
        echo "this is displayed on windows platform"
    """,
    )

同样,您也可以添加 osxlinux 特定的命令。

您可以将以下变量作为命令函数的非关键字参数使用

  • output,一个文件对象,您可以使用它将内容写入输出面板。
  • filename,当前视图的文件名
  • cmdfile,命令文件的文件名
  • window,当前视图的窗口对象
  • command_object,当前 SublimeCommand 对象

用户将被提示输入所有关键字参数的值。

sublime_command 接受以下关键字参数,如果用于创建 shell 命令(前两个参数是字符串)

  • workdir,可以是具体的当前工作目录,也可以是一个函数,该函数接受 cmdfile 和 filename 作为输入,并计算工作目录。

    默认为命令文件的目录。

  • input,用于用户输入的字典。

  • shell,默认为 true,如果应调用 shell 以运行给定的命令。

  • windows,指定特定于 windows 的命令

  • osx,指定特定于 osx 的命令

  • linux,指定特定于 linux 的命令

  • executable 可以是一个字符串,用于指定要调用的 shell 可执行文件,也可以是一个字典,指定特殊平台的 shell

    x = sublime_command("My Command", """
      echo "unix like code"
      """,
      executable = dict(windows = "path/to/powershell"),
      windows = """
         powershell code
      """
      )
    

    注意

    它旨在能够像上述那样使用,但在 Windows 上可能需要进行少许调整(可能在执行前将代码写入临时文件)。

local_config

拥有 sublime_commands.py 文件后,您还可以添加任何其他本地配置文件

from sublime_commands import *
import os

mydir = os.path.dirname(__file__)
local_config(os.path.join(mydir, "my.sublime-snippet"))

这将添加 my.sublime-snippet 文件,如果 sublime_commands.py 变得活跃。

您可以使用本地配置命令执行更多操作

for file in os.listdir(mydir):
    local_config(file, pattern=r"\.sublime-")

这将添加所有匹配正则表达式 \.sublime- 的文件

您可以使用此快捷方式

local_config(mydir, pattern=r"\.sublime-", recurse=False)

如果您想遍历目录树,找到所有符合某些模式的文件

local_config(mydir, pattern=r"\.sublime-")

如果您想添加特定于 sublime-config 文件夹下所有文件

local_config(mydir+"/sublime")

local_config 有以下参数

- ``path`` - path of either a directory or a file
- ``pattern`` - if path does not match pattern (if given), nothing happens
- ``recurse`` - if path specifies a directory, there will be taken all
目录中的文件。
  • dest - 如果给定,则使用它作为目标文件名(路径必须指定一个文件)

贡献

有以下模块贡献

sublime_commands.mercurial_view

本模块提供一些Mercurial命令,这些命令参考该文件最近的mercurial仓库(即最接近包含.hg文件夹的父文件夹)。在您的sublime_commands.py中编写

from sublime_commands.mercurial_view import *
sublime_commands.mercurial

本模块提供指向仓库的Mercurial命令,您的sublime_commands.py就在该仓库中

from sublime_commands.mercurial import *
sublime_commands.mercurial_subrepos

基本与sublime_commands.mercurial相同,但它包括子仓库标志,以便命令处理仓库树

from sublime_commands.mercurial_subrepos import *

未来

  • 向命令添加快捷键
  • 支持任何语言,只需简单地使用协议从脚本获取命令
  • 在环境中提供变量
  • 测试PowerShell