首 页 » 软件使用 » 加强Ruby在sublime text的输出中的双击定位

加强Ruby在sublime text的输出中的双击定位

[ 2014-03-30 11:16 | 浏览次数: 1,133次 | 0条评论 ]

在sublime text中运行代码错误时会输出一些信息,比如哪个文件抛出了异常等等.

在这些输出信息中一般可以双击定位到某个文件的某句,然而有些语句却不可以.

废话不多说,看下面的例子:

1
require "asasd"

这行代码运行后输出以下信息:

D:/opt//lib//2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require’: cannot load such file — asasd (LoadError)
from D:/opt/Ruby/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require’
from D:/var/test.rb:1:in `<main>’
[Finished in 1.7s with exit code 1]

第一行D:/opt/Ruby/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require’: cannot load such file — asasd可以双击定位到kernel_require.rb文件

第二行和第三行却不能双击定位.

但仔细看看是有文件和行号信息的,能不能让他也能定位呢?

可以,下面我讲一下如何让它也能定位.

首先需要知道定位的原理,sublime text是通过正则表达式来获取文件路径和行号的.

配置信息我们可以自定义.

1.在sublime text的Data\Packages\User\目录下新建文件Ruby.sublime-build,

2.里面内容为:

1
2
3
4
5
6
{
"shell_cmd": "ruby \"$file\"",
"file_regex": "(\\w:...*?):([0-9]*):?([0-9]*)",
"selector": "source.ruby",
"encoding": "gbk", //可以是utf-8格式
}

这样就可以了,里面最关键的一句话是:

“file_regex”: “(\\w:…*?):([0-9]*):?([0-9]*)”,

其中”(\\w:…*?):([0-9]*):?([0-9]*)”就是正则表达式,这个正则表达式获取的第一个字符串是文件路径,第二个是行号.
这个正则表达式在以下三个语句中都可以正确获取到文件路径和行号.

D:/opt/Ruby/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require’: cannot load such file — asasd (LoadError)
from D:/opt/Ruby/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require’
from D:/var/test.rb:1:in `<main>’

Ruby.sublime-build文件下载地址:http://pan.baidu.com/s/1kTA0HRx

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

沙发为空,还不快枪?[点此发言]

目前还没有任何评论.