博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TextMate bundle 学习笔记之 创建模版
阅读量:4688 次
发布时间:2019-06-09

本文共 1857 字,大约阅读时间需要 6 分钟。

目标:使用textMate的模版功能,对原有的java bundle进行扩展,创建一个template,从而方便创建class源文件

步骤:

  1. 打开textMate, Bundles -> Bundle Editor -> Show Bundle Editor , bundle列表中找到Java, 选中之 ;
  2. 点击左下角 “+” 号,选择 New Template ,为template取一个名字,比如 java class
  3. 右边 Extention 中,输入java,作为源文件扩展, Command(s) 这里,是具体的创建逻辑逻辑,暂时咱们先空着,一会儿再回来修改。
  4. 选中左边栏,我们新建的java class bundle -> 点击左下角“+”号,选择 New Template File,取个名字,比如template_class.java
  5. 在template文件中输入以下内容, 简单解释: ${}包起来的是预设置的变量,其中TM_NEW_FILE_BASENAME是内置的,等同于你创建的文件名(不包括扩展名). 除此之外还有两个内置变量TM_NEW_FILE_DIRECTORY,TM_New_FILE,含义后面会介绍到。TM_PACKAGE不是内置的,我们将在commands中定义它。
     
    package
    ${TM_PACKAGE};
    /**
    *Comments here.
    *
    @author
    alex
    */
    public
    class
    ${TM_NEW_FILE_BASENAME}{
    }
  6. 定义command。点击新建的java class template。 可以看到右面的Commands里面已经有一些代码。(默认使用的是shell脚本,由于作者对shell不熟,所以这里我使用ruby脚本.  当然python,perl也是可以的。)
    使用下面的代码替换其中的内容,代码解释见注释,请尤其注意红色那一行。
    #!/usr/bin/env ruby -wKU# 加载模版文件f = open(ENV["TM_NEW_FILE"], 'w')template = open("template_class.java").read# 声明两个变量 ENV["TM_YEAR"] = `date +%Y`.chompENV["TM_DATE"] = `date +%Y-%m-%d`.chomp#配置使用软tab (4个空格)来替换制表符if ENV["TM_SOFT_TABS"] == "YES"	tab_size = ENV["TM_TAB_SIZE"].to_i	tab_size = tab_size ? tab_size : 4	template = template.gsub(/\t/, " "*tab_size)end#获取package#注意,这里我假设java源代码的根目录是java,如果你的不同,请酌情更改。regular = /.*java\/(.*)/ENV["TM_PACKAGE"]= ENV["TM_NEW_FILE_DIRECTORY"].match(regular)[1].split("/").join(".")template = template.gsub(/[$]\{([^}]+)\}/){|match| "#{ENV[$1]}" }f.write templatef.close
  7. 至此,再回过头来看我们的template_class.java,就会知道其中的一些变量是怎样来的了。
    好,接下来试一下。Command+Shift+N,创建一个Test.java,模版选项里面选择咱们新建的java class,ok,我们应该能够得到类似这样的一个clas, 可以看到包路径会被正确识别。
     
    package
    com.foooj.helianthus.crm.playground;
    /**
    *Comments here.
    *
    @author
    alex
    */
    public
    class
    Test{
    }
  8. 好,这只是一个简单的例子,但足以说明问题。如果你需要一个更复杂的模版,就请开动脑筋吧。

    另外,这个套路也适合windows上的e-TextEditor,Intype等,毕竟都是仿textMate来的,可能细节略有不同而已。

转载于:https://www.cnblogs.com/nixil/archive/2010/11/24/1886245.html

你可能感兴趣的文章
2808 sci 接收中断
查看>>
原创:机器学习排序深入解读
查看>>
HDU 4288
查看>>
程序的跳转(一行代码)
查看>>
hello world ,详解
查看>>
Update
查看>>
DataGridView ScrollBar End Event
查看>>
C#委托的一次"甜蜜"接触
查看>>
前端开发值得推荐的各种资源
查看>>
MYSQL5.7版本sql_mode=only_full_group_by问题
查看>>
使用JavaScript为一张图片设置备选路径
查看>>
httpclient4.5.2 Post请求支持http和https
查看>>
HDU之旅
查看>>
Sql2005:provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接
查看>>
SQL Server主键自动生成_表and存储过程
查看>>
selenium无法正常运行 Chrome浏览器,cannot find Chrome binary的问题
查看>>
一体机分区误删找到数据的方案
查看>>
excel常用函数
查看>>
网络协议-restful协议
查看>>
JavaScript模块化编程(一)
查看>>