动态命令
仅创建适用于本地环境的可移植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" """, )
同样,您也可以添加 osx 或 linux 特定的命令。
您可以将以下变量作为命令函数的非关键字参数使用
- 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