首 页 » 软件使用 » 让sublime text支持设置运行参数

让sublime text支持设置运行参数

[ 2014-04-04 21:30 | 浏览次数: 6,160次 | 2条评论 ]

sublime text支持编译运行各种脚本,然而却不能支持设置或指定运行参数.

经常需要根据输入参数来决定脚本的流程,所以如果能够设置命令参数那会非常方便.

幸好sublime text自定义功能强大,可以做到这一点.

下面介绍一下如何添加设置运行参数的功能

1.在sublime text的安装目录下的Packages\目录下找到Default.sublime-package,将这个复制出来,将后缀改名为zip.

是的,它就是个zip文件,解压缩它,然后将其中的exec.py文件放到sublime text的Data\Packages\User\目录下.

2.打开exec.py.找到类ExecCommand的run函数,在以下位置添加代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        # Default the to the current files directory if no working directory was given
        if (working_dir == "" and self.window.active_view()
                        and self.window.active_view().file_name()):
            working_dir = os.path.dirname(self.window.active_view().file_name())
 
	#add start
        param_file_name = os.path.basename(self.window.active_view().file_name())
        param_file_name = param_file_name.split('.')[0] + ".param"
        param = ""
        if(os.path.exists(param_file_name)):
            f1 = open(param_file_name)
            param = f1.readline().strip()
            f1.close()
        shell_cmd += " "+param
	#add end
 
        self.output_view.settings().set("result_file_regex", file_regex)
        self.output_view.settings().set("result_line_regex", line_regex)
        self.output_view.settings().set("result_base_dir", working_dir)
        self.output_view.settings().set("word_wrap", word_wrap)
        self.output_view.settings().set("line_numbers", False)
        self.output_view.settings().set("gutter", False)
        self.output_view.settings().set("scroll_past_end", False)
        self.output_view.assign_syntax(syntax)

上面在add start和add end注释内的就是添加的代码,其功能是读取跟当前编辑脚本文件同目录下的同文件名,但后缀是param的文件, 将读到的内容加到shell_cmd中,这样就可以了.

3.当需要运行参数时,在编辑的脚本所在目录下新建文件名和编辑脚本名相同的文件,但后缀是param,比如exec.py,那么运行参数可以保存在exec.param里,这样当运行exec.py时,自动将exec.param里面的内容放到命令行后面,传递给脚本.

运行命令变为python exec.py xxxxx.

xxxxx就是param文件里的内容.

 

当然手动编辑param文件太不直观了,我们可以加个菜单.

1.在sublime text的Data\Packages\User\目录下新建Main.sublime-menu,内容为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[
    {
        "id": "tools",
        "children":
        [
            {
                "caption": "设置参数",
                "id": "set_param",
                "command": "set_param"
            },
 
        ]
    },
]

意思就是在tools菜单下添加一个菜单,名字叫设置参数.

2.在sublime text的Data\Packages\User\目录下新建SetParam.py,内容为

1
2
3
4
5
6
7
8
9
10
11
12
#可以在sublime的命令行窗口使用view.run_command('set_param')来运行试试
import sublime, sublime_plugin
import os
 
 
class SetParamCommand(sublime_plugin.TextCommand):
	def run(self,edit):
		file_name = self.view.file_name()
		param_file_name = os.path.basename(file_name)
		param_file_name = os.path.dirname(file_name)+"/" + param_file_name.split('.')[0] + ".param"
		#print(param_file_name)
		os.system("get_user_input.rb "+"\""+param_file_name+"\"")

意思就是添加了set_param命令,此命令就是启动get_user_input.rb来获取用户输入的参数.

注意get_user_input.rb需要在系统path目录下.

3. 在系统path目录下新建get_user_input.rb文件,内容为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if ARGV.size ==0
	puts "usage: get_user_input file1"
	exit -1
end
 
puts "Please input one line then press enter, \nif you want to cancel, please press ctrl+c:\n"
begin
	line = ""
	line = STDIN.gets
	if(line)
		param_file = File.open ARGV[0],"w"
		param_file.puts line
		param_file.close
	end
rescue Interrupt
	exit -1
end

这个文件就是负责读取用户设置的参数,然后将参数保存在用户指定的文件中.

您可以任意转载本文,但转载时请勿删除作者信息。
作者:hgyxbll,原文链接:http://shashanzhao.com/archives/973.html
上一篇: | 下一篇:

共有2条评论 [点此发言]

  1. cowman
    2015-08-16 17:02

    博主,您好。
    按照你的教程 sublime text支持设置运行参数 进行配置后,有如下问题:
    1、Main.sublime-menu 文件中,第一个}后多了一个逗号,我配置中已经修改
    2、添加的编译菜单“set_param”一直为灰色不可用状态
    盼复,谢谢。

    • hgyxbll
      2015-08-16 17:52

      你看一下set_param命令是否添加成功,应该是此命令不可用,所以为灰色.