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

fido

nerdo 全部

在 Sublime Text (v2 或 v3) 项目中的文件保存时运行命令。

详细信息

  • 2013.07.17.14.56.07
  • github.com
  • github.com
  • 11年前
  • 2小时前
  • 11年前

安装量

  • 总数 130
  • _win 43
  • _mac 49
  • _lin 38
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 1 1 0 0 0 0 0 0 0 0 0 0 1 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

阅读文件

源代码
raw.githubusercontent.com

Fido

Fido 是 Sublime Text (version 2 和 3) 的插件,用于在项目中的文件保存时运行命令。

安装

最简单的方式是使用 Package Control

“复杂”的方法是手动使用 git 安装 Fido。首先,打开 Sublime Text 的数据目录下的 Packages 子目录:* Windows %APPDATA%\Sublime Text 2%APPDATA%\Sublime Text * OS X: ~/Library/Application Support/Sublime Text 2~/Library/Application Support/Sublime Text * Linux ~/.config/sublime-text-2~/.config/sublime-text * 可移植安装:Sublime Text 2/DataSublime Text/Data

然后克隆此仓库

git clone git://github.com/nerdo/fido.git

使用方法

Fido 在保存文件时通过查找项目中的操作。最简单的配置是设置顶级 fido 命令,随时随地保存项目中定义的任何路径上的文件时执行。例如,您的项目文件可能如下所示

{
    "folders":
    [
        {
            "follow_symlinks": true,
            "path": "/my/sublime/project"
        },
        {
            "path": "/another/path"
        }
    ],
    "fido": "cake build"
}

此配置在保存 folders 中定义的项目路径上的文件时运行 cake build。该命令将工作目录设置为保存文件的文件夹,因此如果在 /another/path/scripts/file.coffee 保存文件,则从 /another/path 运行 cake build

您可以通过打开控制台来看到 Fido 的工作情况。

fido$ cake build
This is the output of cake build!

您还可以为每个文件夹设置不同的命令

{
    "folders":
    [
        {
            "follow_symlinks": true,
            "path": "/my/sublime/project",
            "fido": "cake build"
        },
        {
            "path": "/another/path",
            "fido": "rm -f ./tmp/generated-output.txt"
        }
    ]
}

在这个例子中,只有当在 /my/sublime/project 上保存文件时,才会运行 cake build。当文件在路径 /another/path 上保存时,使用命令 rm -f ./tmp/generated-output.txt 删除文件 /another/path/tmp/generated-output.txt

如果您想在整个路径上运行 cake build,但在保存 /another/path 内部的文件时仅删除那个临时文件,怎么办?没问题。定义您的设置如下

{
    "folders":
    [
        {
            "follow_symlinks": true,
            "path": "/my/sublime/project"
        },
        {
            "path": "/another/path",
            "fido": "rm -f ./tmp/generated-output.txt"
        }
    ],
    "fido": {
        "command": "cake build",
        "alwaysRun": true
    }
}

在这个场景中,Fido 命令被定义为一个具有 commandalwaysRun 属性的对象。

如果 alwaysRun 设置为 false(默认值),则在找到更具体的命令(如删除临时文件)时,该命令将不会运行。

大多数项目都是使用单个文件夹设置的,但您可能希望为项目中不同部分的文件运行不同的命令。可以通过将 fido 设置为数组来实现这一点。一个更符合现实世界的项目可能如下所示

{
    "folders":
    [
        {
            "follow_symlinks": true,
            "path": "/my/sublime/project"
        },
    ],
    "fido": [
        {
            "follow_symlinks": true,
            "path": "/my/sublime/project/scripts/coffee",
            "command": "cake build"
        },
        {
            "path": "/my/sublmime/project/scss",
            "command": "sass --style compressed site.scss ../css/site.css"
        },
        {
            "command": "growlnotify -m'Insanely annoying message every time a file is saved' -t'Annoying Notification'",
            'alwaysRun': true
        }
    ]
}

这样设置 Fido 来运行一些命令。首先,当在路径 /my/sublime/projects/scripts/coffee 上保存文件时,将运行 cake build。注意,follow_symlinks 选项与在文件夹中定义时的意义相同。

然后有一个 sass 命令,用于在文件的路径上保存时重新编译 scss 文件到 css。

最后,还有一个在每个项目中保存的文件上运行的命令,这是一种运行 growlnotify 的命令,没有明显的理由……好吧,所以这不是一个 完全 现实世界的例子 :P

因为大多数人不会通常从命令行启动 sublime,所以您可能无法设置您期望的环境路径。例如,如果您尝试运行 cake build,您可能在您的控制台中看到如下:

fido$ cake build
/bin/sh: cake: command not found

如果得到这样的错误,您需要设置您的环境路径,打开终端并检查您的 PATH 变量。

在 OS X 和 *nix 上:echo $PATH

复制这个值,并按照以下方式设置

{
    "folders":
    [
        {
            "follow_symlinks": true,
            "path": "/my/sublime/project"
        },
    ],
    "fido": [
        {
            "follow_symlinks": true,
            "path": "/my/sublime/project/scripts/coffee",
            "command": "cake build",
            "env": {
                "PATH": "<<< PATH COPIED FROM COMMAND LINE HERE >>>"
            }
        },
        {
            "path": "/my/sublmime/project/scss",
            "command": "sass --style compressed site.scss ../css/site.css",
            "env": {
                "PATH": "<<< PATH COPIED FROM COMMAND LINE HERE >>>"
            }
        },
        {
            "command": "growlnotify -m'Insanely annoying message every time a file is saved' -t'Annoying Notification'",
            'alwaysRun': true,
            "env": {
                "PATH": "<<< PATH COPIED FROM COMMAND LINE HERE >>>"
            }
        }
    ]
}

根据您的命令位于文件系统中的位置,可能需要也可能不需要设置路径,但是将它们包含在每个命令中可能是一个好主意。

顺便说一下,任何环境变量都可以通过在 env 对象上设置键值对来设置,而不仅仅是 PATH

特别感谢

特别感谢 titoBouzout,允许多次使用他的 SideBarEnhancements 插件中的一段代码,以在 ST2 中正确地让其工作。