如何更改Sublime Text 3中的当前工作目录?

时间:2016-11-14 02:02:12

标签: directory settings sublimetext3 preferences cwd

每当我打开脚本(Python或R)时,我希望Sublime自动将当前工作目录更改为该文件的路径。可能吗?

我将设置"working_dir": "$file_path",添加到Sublime偏好设置,但它没有帮助。

4 个答案:

答案 0 :(得分:2)

好的,我解决了这个问题。这是我做的:

  1. 安装Sublime Text 3包PackageResourceViewer
  2. 打开命令面板,搜索PackageResourceViewer: Open Resource
  3. 浏览到Python资源,然后打开Python.sublime-build
  4. 删除默认行"shell_cmd": "python -u \"$file\"",
  5. 添加以下两行:

    "cmd": ["python", "-u", "$file"],

    "working_dir": "$file_path",

  6. 或者,您可以通过以下方式替换上述两行:

    "shell_cmd": "cd $file_path; python -u \"$file\""

  7. 如果您希望Sublime Text 3根据活动脚本的路径自动更改当前工作目录,请对R或其他构建资源执行相同的操作。

答案 1 :(得分:0)

您可以使用“视图”菜单中的“显示控制台”命令打开python控制台,然后键入

import os
os.chdir('/my/directory')

它会更改Sublime Text进程的工作目录及其生成的任何进程。

答案 2 :(得分:0)

另一种解决方案:您知道控制台将以 Alt + 打开。当我使用组合 Alt + 1 直接选择当前文件路径,这种方式是您每次打开sublime文本时都必须执行的操作。

答案 3 :(得分:0)

我遇到了同样的问题,另外如果我想导入一个模块,它总是会返回找不到模块。
要解决此问题:我将 python.sublime-build 文件的第一行更改为下面的内容

{
    "shell_cmd": "cd $file_path; python -u \"$file\"",
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python",
{
    "env": "PYTHONIOENCODING": "utf-8",
    ],
    "variants":
}
        {
            "name": "Syntax Check",
            "shell_cmd": "python -m py_compile \"${file}\"",
        }
    ]
} 

出于好奇,我想知道为什么会发生这种情况,因此在对我的操作系统进行了更多调查后,跑了:

import os

for k, v in os.environ.items():
    print(k, v)
print(os.getcwd())

它返回我的环境变量及其值的字典,其中 2 个在构建结果 PWDOLDPWD 中回答了我的问题:

PWD /Users/<myname>/code
OLDPWD /Users/<myname>/code/code_py
...
[Finished 0.0ms]
...
[shell_cmd: cd /Users/<myname>/code/code_py; python -u "/Users/<myname>/code/code_py/YT-tutorials.py"]
...

啊哈! 因为我之前添加了 cd $HOME/code 我的 ~/.bash_profile,所以每次我用 python 在 sublime 中构建 (command+B) 时,我的 shell 配置文件都会在幕后更改目录并移动我进入我的 ~/code 目录。
现在,在如上所述更改 python.sublime-build 文件后,此构建行为已得到修复 -- & 我希望这对您也有帮助!