专注于WEB前端开发, 追求更好的用户体验, 更好的开发体验 [长沙前端QQ群:234746733]

插件

  • sublime text 项目同步插件(scp)

    / 分类: 工具,实践 / 8 Comments

    基于sublime的SimpleSync插件修改, 完善了原插件的一些缺陷, 比如: 不支持windows系统, 保存时会强制同步, 不支持快捷键调用, 修改配置需要重启sublime.
    所以把源码大部分都修改了. 原版优秀的地方也都已保留, 比如: 执行同步时使用多线程来避免UI阻塞, 同时支持本地同步和同步到server.
    已增加对ST3的支持.

    下面把功能列一下:

    1. 1. 把本地项目的文件同步到本地或server (比如可以用来: 同步到server端预览, 减少不停地commit-push-pull; 或本地编辑时备份到其他文件夹等)
      注: 同步本地用cp命令, 同步server用scp命令
    2. 2. 支持多文件夹, 可以把所有项目的规则写到一起, 针对不同的文件夹执行不同的命令.
    3. 3. 支持多规则, 可以把当前编辑的文件同时推到N个server或本地文件夹.
    4. 4. 同步时的命令利用threading多线程执行, UI不会阻塞, 可以继续操作编辑器(否则sublime执行CMD等命令会卡住, 等命令结束才会响应)
    5. 5. + 支持windows系统 (原版只支持MacOS and Linux)
    6. 6. + 保存文件时是否自动同步, 可在配置里设置 ("autoSync": false)
    7. 7. + 支持快捷键调用同步 (会自动保存当前文件, 再同步)
    8. 8. + 同步前读取配置, 修改配置不需要重启sublime.

    简单配置:

    修改配置: Preferences > Package Settings > sublimeSimpleSync
    增加快捷键: Preferences > Key Buildings - User, 添加一行, 比如:
    { "keys": ["alt+s"], "command": "sublime_simple_sync"},

    项目地址: https://github.com/kairyou/SublimeSimpleSync

  • Sublime Text 新建文件的模版插件: SublimeTmpl

    / 分类: 工具,实践 / 84 Comments

    写了个sublime的模版插件, 项目主页: https://github.com/kairyou/SublimeTmpl
    这样就可以新建文件时使用模版的内容了, 目前添加了html/js/css/php/python/ruby的模版. 不需新建空白文件, 再从其他文件复制内容过来了.
    已增加对Sublime Text3的支持.

    使用:

    1. ST菜单, File-New File (SublimeTmpl), 选择列表里的相应菜单, 可直接使用模版新建文件.
    2. 命令, cmd+shift+p, 输入: "tmpl:", 可以找到创建文件的菜单列表.
    3.快捷键, 默认快捷键见下面. 可以自己修改, 方法见"设置"部分.

    默认快捷键:

    ctrl+alt+h html
    ctrl+alt+j javascript
    ctrl+alt+c css
    ctrl+alt+p php
    ctrl+alt+r ruby
    ctrl+alt++shift+p python
    
    关闭默认快捷键:

    Package Settings > SublimeTmpl > Settings - User, 增加disabled_keymap_actions配置:
    "disabled_keymap_actions": "html, css" // 关闭html/css语法的快捷键(多个逗号分隔) "disabled_keymap_actions: "all" //关闭所有语法快捷键

    安装:

    方法1. 通过 Package Control
    Package Control / Install Package, 搜索"SublimeTmpl" 或 "tmpl", 安装.
    * [2012/08/01]已经通过Package Control审核

    方法2. Github
    打开项目主页, git clone到ST的Packages文件夹(\Data\Packages), 或直接把ZIP格式的下载下来解压到Packages文件夹(文件夹名称必须为:SublimeTmpl).

    设置:

    菜单: Preferences / Packages Settings / SublimeTmpl, 可以编辑菜单/快捷键/新语法等等.

    如果你想贡献自己的package, 可以参考我这篇文章的介绍:
    https://xhl.me/archives/how-to-submit-a-sublime-package/

    新增特性:

    1. 用户自定义模板 (Thanks @Xu Cheng)
    自定义模板路径: "Data\Packages\User\SublimeTmpl\templates" 目录, 会优先使用(可以参考:默认的模板).
    默认模版路径: "Data\Packages\SublimeTmpl\templates" 目录.
    用自己自定义的模板: 推荐把默认模版目录的*.tmpl文件 复制到 自定义模板路径, 再去修改.

    2. 模板支持 ${date} 变量
    settings - user里面可以修改${date}默认的输出格式("%Y-%m-%d %H:%M:%S"), 比如改成: "date_format" : "%Y-%m-%d"

    3. 模板支持自定义 attr
    settings - user里添加:

    "attr": {
        "author": "your name" ,
        "email": "[email protected]",
        "link": "http://yours.com",
        "hello": "word"
    }
    

    就能在模板中使用 ${author} ${email} ${link} ${hello} 变量
    Thanks @vfasky (Blog)

    4. 保存文件时支持: ${saved_filename}, ${saved_filepath} 变量, settings - user里添加:
    "enable_file_variables_on_save": true, // 开启
    文件保存时, 上面的2个变量会替换为: 保存的文件名, 和文件路径.

    5. 支持: ${project_base_name}, ${project_path} and ${platform} 变量, settings - user里添加:
    "enable_project_variables": true, // 开启
    Note: 仅ST3支持, 上面的3个变量会替换为: 项目名, 项目路径, 当前系统环境.

    另外, 关于新增语言的附加说明

    1. 新增SublimeTmpl里面没有的语言

    1.1 新增.tmpl文件:
    自定义模板目录 (`Preferences - Browse Packages`, `User/SublimeTmpl/templates`), 新增比如 `html5.tmpl`.

    1.2 配置语言:
    首先参考: `Packages Settings / SublimeTmpl / Settings - Default` 的默认设置.
    新增语法, 选择: `SublimeTmpl / Settings - User`, 比如:

    {
        "html5": { // new
            "syntax": "Packages/HTML/HTML.tmLanguage",
            "extension": "html" // default_extension
        },
        "vue": { // new
            "syntax": "Packages/Vue Syntax Highlight/vue.tmLanguage",
            "extension": "vue"
        },
        // "disable_keymap_actions": "html, js, python", // "all"
        "enable_project_variables": true, // ${project_base_name}, ${project_path} and ${platform}
        "enable_file_variables_on_save": true, // ${saved_filename}, ${saved_filepath} on save file
        "attr": {
            "author": "Your Name",
            "email": "[email protected]",
            "link": "http://example.org"
        }
    }
    

    `html5`:对应`html5.tmpl`, `syntax`是Packages目录内的syntax路径, `extension`是默认保存时使用的扩展名.

    新增开始菜单: `SublimeTmpl / Settings - Menu`, 参照 `Menu - Default`.
    新增快捷键: `SublimeTmpl / Key Bindings User`, 参照 `Key Bindings Default`.

    2. 新增Sublime的语言

    这个我也没新建过, 可以去Package Control或者github上面找个其他人添加的新语言, 参考参考.
    如果没找到别人写好的, 可以参考如下网址, 自己做:
    http://docs.sublimetext.info/en/latest/extensibility/syntaxdefs.html (官方文档, 利用AAAPackageDev这个插件制作)
    http://manual.macromates.com/en/language_grammars (textmate的doc, 和sublime大部分是相同的)
    https://github.com/LearnBoost/stylus/blob/master/editors/Stylus.tmbundle/Syntaxes/Stylus.tmLanguage (别人写好的语法, 可以和自己新建的对比)

  • 提交插件到 sublime text packages control

    / 分类: 工具 / No Comments

    介绍下简单的提交sublime插件到packages control的步骤:

    针对新版的packages control

    提交单个插件: 添加自己的插件信息到repository/文件夹里面对应字母的文件.

    更多信息参考:https://sublime.wbond.net/docs/developers
    example-repository.json 是插件的例子, 里面有一些注释的说明, 可以针对不同的ST版本/不同的系统设置插件源.

    如果自己有多个插件: 可以创建个单独的项目, 创建个packages.json, 里面包含多个插件的信息, 格式可以参考example-repository.json.
    在channel.json加上这个packages.json的url.
    可以参考下我创建的:https://raw.github.com/kairyou/sublime_packages/master/packages.json

    如果json内容的releases-details使用tag来自动更新版本, 那么push到github时需要加上tag来更新版本号.
    git tag -a 1.0.1 -m 'init' #创建
    git tag #查看
    git push origin 1.0.1 #push tag
    删除旧的名称为1.0.0的tag (可选):
    git push origin :refs/tags/1.0.0 # 删除远端
    git tag -d 1.0.0 # 删除本地

    Send a pull request

    修改好后, push到自己fork的分支. 接下来把自己的修改提交给packages control:
    打开github上自己fork的主页, 进入"Pull Request"(右上方有个按钮).
    github新版界面有个"Click to create a pull request for this comparison", 要点击输入标题和内容.
    如果你做了修改, 可以看到一个表单, 输入Pull Request的标题和内容, 然后Pull Request.
    之后就等作者merge了.

    如果packages control作者接受了,你的修改就可以合并到主版本里了, 然后就可以在packages control官方找列表看到你的package了.
    PS: 如果此时担心主版本修改, 要获取最新的文件, 可以用 git pull packages_control 将主版本的修改拉到本地.

    如何更新自己Fork的packages_control代码

    clone自己的fork的分支下來:
    git clone [email protected]:yourName/package_control_channel.git

    remote添加一个(名为upstream)的远程仓库, URL使用对方的地址:
    git remote add upstream [email protected]:wbond/package_control_channel.git
    git remote -v # 可查看当前的远程仓库列表

    把对方的代码拉到本地: git fetch upstream
    合并对方的代码: git merge upstream/master
    推到自己的仓库: git push origin master
    Ps: 如果放弃自己的分支(直接使用对方最新的), 也可以在自己的仓库主页点"Settings", 在选"Delete this repository". 然后去对方仓库重新点fork.

    旧版本的package_control添加的方法, 可以忽略下面的内容

    1. 在自己创建的package文件夹内创建: packages.json, 格式参见:
    http://wbond.net/sublime_packages/package_control/package_developers#Custom_packages_json_on_GitHub
    或: https://raw.github.com/kairyou/SublimeTmpl/master/packages.json

    2. Fork the Package Control Channel: https://github.com/wbond/package_control_channel
    在GitHub上Fork这项目, 把你fork后的分支 git clone 到本地, 编辑repositories.json, 找到里面的"repositories"(可以看到里面已经有很多package了).
    加上自己的packages.json的URL(类似上面我创建的packages.json地址). 注意, 添加时, 请按URL的字母顺序排列, 不需要加URL列表的最后面.

  • sublime text2/3 插入日期时间插件

    / 分类: 工具,实践 / 13 Comments

    之前在这里已经推荐过sublime text了,整体还是不错的,但自带的menu没有直接插入日期时间的。插入日期时间是比较常用的功能,所以就自己写了个插件。会python的话应该很容易了,之前也没系统学过,所以看看sublime官方论坛,再查查python的资料,一个插件就完成了。
    修改了下源码, 现在也支持ST3了.

    源码我放在github了(地址),可以下载zip来安装插件。如果想用git,也可以看看我前面写的GTI的安装和使用

    安装和使用,源码的readme里面都说了,快捷键:
    F5 : yyyy-MM-dd
    alt+F5 : yyyy-MM-dd hh:mm:ss
    ctrl+F5 : 星期E
    之前考虑用F4的,但貌似被sublime占用了,所以用的F5。

    另外推荐安装"Package Control",很多插件就可以在线安装了,蛮方便的,不另外开篇,直接写在这里好了。

    Sublime Package Control 安装参见:http://wbond.net/sublime_packages/package_control/installation
    一步一步照着来就OK了。

    Package Control 配置:
    因为在线安装,需要设置GIT/HG root,
    Preferences- Package settings - Control - Settings User,加上git/hg路径,比如:
    "git_binary": "D:/Git/PortableGit/bin",
    "hg_binary": "D:/TortoiseHg/"

    然后就可以在Preferences- Package Control - install package 里面安装需要的插件了~
    另外推荐个package:Prefixr(css3兼容代码补全)

  • 在VIM里 调用多种浏览器 预览html php 等文件

    / 分类: 工具,实践 / 25 Comments

    最近这段时间睡眠严重不足,脑袋发晕的时候就要放送下,so改善vim。产生个想法:把自己喜欢的editplus的功能都搞到vim上面来。这个就是其中之一:在浏览器中预览当前文件。有时间的话,可能要写点从editplus转型到VIM的东西。

    优点1:
    囊括了主要的浏览器:chrome、firefox、oprea、ie、ietester(随自己喜欢可以增加更多,比如safari),浏览器的简称:cr、ff、op、ie、ie6、ie7、ie8、ie9、iea,简称、路径以键值对方式都保存到browsers中。
    上面的简称大部分人应该都明白了,ie就是系统默认的ie,最后一个iea是在ietester中使用所有版本的ie同时预览(IE5.5-IE9)。

    IETester 的Arguments可以见 : http://www.my-debugbar.com/wiki/IETester/CommandLineArguments

    优点2:
    本地文件自动以file://开头或http://开头的两种方式预览。如果文件在htdocs就用http方式打开,否则用file方式。
    file://开头的地址预览html一般没问题,但是预览php或aspx等就显得苍白无力了。这里可以设置一个htdocs/wwwroot的文件夹地址,然后预览的时候匹配文件是否在这个文件夹内(支持子目录),如果在就用http://方式打开,否则就用file://方式。

    无论前端开发者或者程序员都及其适合。自夸完毕,下面说下使用:
    在_vimrc中加入下面的代码,然后按F4+cr - 在chrome预览,F4+ff  - 在firefox下预览……。方式就是F4+浏览器简称(应该比用F4+1234的数字形式便于记忆)。当然,这个完全可以自己diy的。

    下面fuc里面的浏览器地址需要自己修改,我的文件夹目录和你的可能是有不同的。还有htdocs文件夹、本地的预览的端口号,我使用的是8090.

    " 在浏览器预览 for win32
    function! ViewInBrowser(name)
        let file = expand("%:p")
        exec ":update " . file
        let l:browsers = {
            \"cr":"D:/WebDevelopment/Browser/Chrome/Chrome.exe",
            \"ff":"D:/WebDevelopment/Browser/Firefox/Firefox.exe",
            \"op":"D:/WebDevelopment/Browser/Opera/opera.exe",
            \"ie":"C:/progra~1/intern~1/iexplore.exe",
            \"ie6":"D:/WebDevelopment/Browser/IETester/IETester.exe -ie6",
            \"ie7":"D:/WebDevelopment/Browser/IETester/IETester.exe -ie7",
            \"ie8":"D:/WebDevelopment/Browser/IETester/IETester.exe -ie8",
            \"ie9":"D:/WebDevelopment/Browser/IETester/IETester.exe -ie9",
            \"iea":"D:/WebDevelopment/Browser/IETester/IETester.exe -all"
        \}
        let htdocs='E:\\apmxe\\htdocs\\'
        let strpos = stridx(file, substitute(htdocs, '\\\\', '\', "g"))
        if strpos == -1
           exec ":silent !start ". l:browsers[a:name] ." file://" . file
        else
            let file=substitute(file, htdocs, "http://127.0.0.1:8090/", "g")
            let file=substitute(file, '\\', '/', "g")
            exec ":silent !start ". l:browsers[a:name] file
        endif
    endfunction
    nmap <f4>cr :call ViewInBrowser("cr")<cr>
    nmap <f4>ff :call ViewInBrowser("ff")<cr>
    nmap <f4>op :call ViewInBrowser("op")<cr>
    nmap <f4>ie :call ViewInBrowser("ie")<cr>
    nmap <f4>ie6 :call ViewInBrowser("ie6")<cr>
    

    另外有同学想要linux下面的例子, 我没有环境, Mac下面这样是OK的,可以参考:

    " 在浏览器预览 for Mac
    function! ViewInBrowser(name)
        let file = expand("%:p")
        let l:browsers = {
            \"cr":"open -a \"Google Chrome\"",
            \"ff":"open -a Firefox",
        \}
        let htdocs='/Users/leon1/'
        let strpos = stridx(file, substitute(htdocs, '\\\\', '\', "g"))
        let file = '"'. file . '"'
        exec ":update " .file
        "echo file .' ## '. htdocs
        if strpos == -1
            exec ":silent ! ". l:browsers[a:name] ." file://". file
        else
            let file=substitute(file, htdocs, "http://127.0.0.1:8090/", "g")
            let file=substitute(file, '\\', '/', "g")
            exec ":silent ! ". l:browsers[a:name] file
        endif
    endfunction
    nmap <Leader>cr :call ViewInBrowser("cr")<cr>
    nmap <Leader>ff :call ViewInBrowser("ff")<cr>