36

我想获得 SubLime Linter 插件(https://github.com/Kronuz/SublimeLinter)来识别 Ruby 1.9 语法。有没有人能够让它在 SublimeText 2 中工作?

这是我当前的默认设置文件:

/*
    SublimeLinter default settings
*/
{
    /*
        Sets the mode in which SublimeLinter runs:

        true - Linting occurs in the background as you type (the default).
        false - Linting only occurs when you initiate it.
        "load-save" - Linting occurs only when a file is loaded and saved.
    */
    "sublimelinter": true,

    /*
        Maps linters to executables for non-built in linters. If the executable
        is not in the default system path, or on posix systems in /usr/local/bin
        or ~/bin, then you must specify the full path to the executable.
        Linter names should be lowercase.

        This is the effective default map; your mappings may override these.

        "sublimelinter_executable_map":
        {
            "perl": "perl",
            "php": "php",
            "ruby": "ruby"
        },
    */
    "sublimelinter_executable_map":
    {
    },

    /*
        Maps syntax names to linters. This allows variations on a syntax
        (for example "Python (Django)") to be linted. The key is
        the base filename of the .tmLanguage syntax files, and the value
        is the linter name (lowercase) the syntax maps to.
    */
    "sublimelinter_syntax_map":
    {
        "Python Django": "python"
    },

    // An array of linter names to disable. Names should be lowercase.
    "sublimelinter_disable":
    [
    ],

    /*
        The minimum delay in seconds (fractional seconds are okay) before
        a linter is run when the "sublimelinter" setting is true. This allows
        you to have background linting active, but defer the actual linting
        until you are idle. When this value is greater than the built in linting delay,
        errors are erased when the file is modified, since the assumption is
        you don't want to see errors while you type.
    */
    "sublimelinter_delay": 0,

    // If true, lines with errors or warnings will be filled in with the outline color.
    "sublimelinter_fill_outlines": false,

    // If true, lines with errors or warnings will have a gutter mark.
    "sublimelinter_gutter_marks": false,

    // If true, the find next/previous error commands will wrap.
    "sublimelinter_wrap_find": true,

    // If true, when the file is saved any errors will appear in a popup list
    "sublimelinter_popup_errors_on_save": false,

    // jshint: options for linting JavaScript. See http://jshint.com/#docs for more info.
    // By deault, eval is allowed.
    "jshint_options":
    {
        "evil": true,
        "regexdash": true,
        "browser": true,
        "wsh": true,
        "trailing": true,
        "sub": true,
        "strict": false
    },

    // A list of pep8 error numbers to ignore. By default "line too long" errors are ignored.
    // The list of error codes is in this file: https://github.com/jcrocholl/pep8/blob/master/pep8.py.
    // Search for "Ennn:", where nnn is a 3-digit number.
    "pep8_ignore":
    [
        "E501"
    ],

    /*
        If you use SublimeLinter for pyflakes checks, you can ignore some of the "undefined name xxx"
        errors (comes in handy if you work with post-processors, globals/builtins available only at runtime, etc.).
        You can control what names will be ignored with the user setting "pyflakes_ignore".

        Example:

        "pyflakes_ignore":
            [
                "some_custom_builtin_o_mine",
                "A_GLOBAL_CONSTANT"
            ],
    */
    "pyflakes_ignore":
    [
    ],

    /*
        Ordinarily pyflakes will issue a warning when 'from foo import *' is used,
        but it is ignored since the warning is not that helpful. If you want to see this warning,
        set this option to false.
    */
    "pyflakes_ignore_import_*": true,

    // Objective-J: if true, non-ascii characters are flagged as an error.
    "sublimelinter_objj_check_ascii": false
}
4

5 回答 5

41

我能够使用我的 ruby​​ 1.9 可执行文件的绝对路径让它工作。我正在使用 rbenv,所以要获得我运行的路径rbenv which ruby,您可能需要输入/usr/local/bin/rubyor /usr/local/bin/ruby19

这就是我的 sublimelinter 默认设置的样子(如果您愿意,也可以将其放入项目特定的文件中:)

Preferences -> Package Settings -> SublimeLinter -> Settings - User

"sublimelinter_executable_map":
{
    "ruby": "~/.rbenv/versions/1.9.3-p0/bin/ruby"
},
于 2012-02-23T21:21:57.360 回答
19

使用 rvm 时,您应该可以使用rvm-auto-ruby它。

这有一个问题,但我认为它现在已经解决了:https ://github.com/SublimeLinter/SublimeLinter/issues/30

于 2012-06-04T16:30:56.377 回答
16

所有,只是想插话,因为我也遇到了这个问题,以下适用于 Ubuntu 上的 ST2 v 2.0.1 的 User/SublimeLinter.sublime-settings 文件,该文件位于

Preferences -> Package Settings -> SublimeLinter -> Settings - User

{
  "sublimelinter_executable_map": {
    "ruby": "~/.rvm/bin/rvm-auto-ruby"
  }
}

添加后,重新启动 ST2,进入控制台并通过运行以下命令检查它是否已更新:

view.settings().get("sublimelinter_executable_map")

您应该得到以下输出:

{'ruby': u'~/.rvm/bin/rvm-auto-ruby'}
于 2013-02-27T19:43:19.553 回答
1

我还可以通过添加 PATH 并将 ruby​​ 指向 rbenv shim 到 sublimelinter_executable_map 来实现此功能(我认为这也是官方文档中推荐的方式。)这也使您能够切换 ruby​​ 版本而无需更新也配置。

{
  "sublimelinter_executable_map": {
    "path": "/usr/local/var/rbenv/shims:/Users/luke/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin",
    "ruby": "/usr/local/var/rbenv/shims/ruby"

  }
}
于 2013-05-14T01:33:45.270 回答
0

在 SublimeLinter 3 中,rbenv(希望 rvm)开箱即用,没有额外的配置(除了确保它们在你的 shell 启动中的正确位置初始化)。

于 2013-12-24T07:12:44.377 回答