Sublime Text сам по себе не может обрабатывать ввод через raw_input()
(Python 2) или input()
(Python 3). То же самое относится и к другим языкам: gets
в Ruby, класс Scanner
в Java, класс readline
в Node, scanf
в C, cin
в C++ и т. д. Одним из краткосрочных решений является получение Package Control, если у вас его еще нет, установите SublimeREPL. Это позволяет вам передавать или запускать часть или весь ваш код через работающий REPL. Может потребоваться некоторая настройка файлов Main.sublime-menu
, чтобы предпочитаемый вами интерпретатор работал правильно. В качестве альтернативы вы можете использовать отличный плагин Terminus — подробности приведены внизу.
Если код, который вы запускаете, плохо работает с SublimeREPL (например, вы используете C/C++/Java/и т. д. и вам нужно скомпилировать код перед его запуском), или вы просто хотите запустить его независимо от Sublime , вам потребуется создать собственную систему сборки. Сохраните следующее как Packages/User/Python_cmd.sublime-build
:
Окна
{
"cmd": ["start", "cmd", "/k", "c:/python38/python.exe", "$file"],
"selector": "source.python",
"shell": true,
"working_dir": "$file_dir",
"env": {"PYTHONIOENCODING": "utf-8"}
}
изменение пути к исполняемому файлу Python по мере необходимости. Затем перейдите к Tools -> Build System
и выберите Python_cmd
, и когда вы нажмете CtrlB для сборки, откроется новое cmd
окно с вашим запущенным файлом. . Параметр /k
возвращает в командную строку, не закрывая окно, после завершения работы вашей программы, чтобы вы могли проверить вывод, трассировку и т. д.
Обратите внимание, что эта система сборки специфична для Windows, поскольку в macOS и Linux нет cmd
. Системы сборки для этих платформ приведены ниже.
macOS
Если вы используете OS X/macOS, следующая система сборки откроет вашу программу в новом экземпляре терминала. Сохраните его как Packages/User/Python_Terminal.sublime-build
. В моем тестировании на macOS 10.15 окно терминала не всегда появлялось наверху при активации, поэтому, если вам может понадобиться искать его за другими окнами.
{
"shell_cmd": "osascript -e 'tell app \"Terminal\" to do script \"cd $file_path && python3 -u $file\"'",
"working_dir": "$file_path",
"selector": "source.python",
"env": {"PYTHONIOENCODING": "utf-8"}
}
Вам может потребоваться указать путь к исполняемому файлу Python, если его нет в вашем $PATH
.
линукс
И, наконец, вот система сборки для Linux. Он был протестирован на Ubuntu, поэтому, если вы используете другой дистрибутив, вам необходимо убедиться, что установлен gnome-terminal
. Сохраните его как Packages/User/Python_shell.sublime-build
. После завершения работы программы нажмите любую клавишу, чтобы закрыть окно.
{
"shell_cmd": "gnome-terminal --working-directory=$file_path -- bash -c 'python3 -u \"$file\" && read -n 1 -s -r'",
"working_dir": "$file_path",
"selector": "source.python",
"env": {"PYTHONIOENCODING": "utf-8"}
}
Для справки: каталог Packages
открывается при выборе Preferences → Browse Packages…
:
- Линукс:
~/.config/sublime-text-3/Packages
- OS X:
~/Library/Application Support/Sublime Text 3/Packages
- Обычная установка Windows:
C:\Users\YourUserName\AppData\Roaming\Sublime Text 3\Packages
- Переносная установка Windows:
InstallationFolder\Sublime Text 3\Data\Packages
Я тестировал эти системы сборки только с Python, но они должны нормально работать на любом языке. При изменении просто убедитесь, что все одинарные и двойные кавычки совпадают – иначе вы получите ошибки или неожиданное поведение.
ОБНОВИТЬ
Существует независимый от платформы подключаемый модуль под названием Terminus, который, среди прочего, обеспечивает замену системный движок сборки exec
по умолчанию. Это позволяет вам взаимодействовать с вашей программой на панели сборки под вашим кодом. После того, как вы установили его из Package Control, создайте следующую систему сборки (опять же, для Python):
{
"target": "terminus_exec",
"cancel": "terminus_cancel_build",
"cmd": [
"/path/to/python", "-u", "$file"
],
"working_dir": "$file_path",
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
}
Вам нужно будет настроить путь к исполняемому файлу Python, как указано выше. Обязательно прочтите документацию, чтобы узнать обо всех других способах использования этого замечательного плагина.
person
MattDMo
schedule
10.10.2013