将工作目录设置为SublimeREPL中活动脚本的位置

时间:2014-10-28 12:29:27

标签: sublimetext3 sublimerepl

我将Sublime Text 3和SublimeREPL用于R和Python中的命令。每当启动SublimeREPL时,它将当前工作目录设置为Sublime Text安装目录。这在Windows和Mac OSX上都会发生。通常,我需要运行R或Python中的代码,该代码打开的文件与我正在运行的Rpy文件位于同一文件夹中。在正常情况下(即不使用Sublime Text),这样可以正常工作,因为R或Python解释器知道查找脚本所在的同一目录。

然而,使用SublimeREPL,命令被转移'作为SublimeREPL的文本,因此SublimeREPL不知道该程序的来源。因此,我需要在我的每个程序中明确指定我尝试访问的文件的位置,这有点笨拙,特别是如果我的程序移动(他们这样做)。

有没有办法让SublimeREPL在启动时将当前工作目录设置为与当前活动脚本文件相同的目录?这将是一个很好的解决方法,因为它只是意味着如果我改为使用位于不同目录中的文件,则必须重新启动REPL。

enter image description here

1 个答案:

答案 0 :(得分:1)

我有同样的问题并找到答案here

对于Python和IPython,在Packages/User文件夹中,创建SublimeREPL/config/Python/Main.sublime-menu,在其中指定"cwd": "$file_path"

[
    {
        "id": "tools",
        "children":
        [{
            "caption": "SublimeREPL",
            "mnemonic": "r",
            "id": "SublimeREPL",
            "children":
            [
                {
                    "caption": "Python",
                    "id": "Python",

                    "children":[
                        {
                            "command": "repl_open",
                            "caption": "Python - Anaconda",
                            "id": "repl_python",
                            "mnemonic": "p",
                            "args": {
                                "type": "subprocess",
                                "encoding": "utf8",
                                "cmd": ["/path/to/Anaconda/python", "-i", "-u"],
                                "cwd": "$file_path",
                                "syntax": "Packages/Python/Python.tmLanguage",
                                "external_id": "python",
                                "extend_env": {"PYTHONIOENCODING": "utf-8"}
                            }
                        },
                        {
                            "command": "repl_open",
                            "caption": "IPython - Anaconda",
                            "id": "repl_python_ipython",
                            "mnemonic": "p",
                            "args": {
                                "type": "subprocess",
                                "encoding": "utf8",
                                "autocomplete_server": true,
                                "cmd": ["/path/to/Anaconda/python", "-u", "${packages}/SublimeREPL/config/Python/ipy_repl.py"],
                                "cwd": "$file_path",
                                "syntax": "Packages/Python/Python.tmLanguage",
                                "external_id": "python",
                                "extend_env": {
                                    "PYTHONIOENCODING": "utf-8",
                                    "SUBLIMEREPL_EDITOR": "$editor"
                                }
                            }
                        }
                    ]
                }
            ]
        }]
    }
]

我想,对于R来说它是一样的。