Запуск Python в интерактивном режиме из Sublime Text 2
Я просмотрел все ответы на этом форуме, но мне чего-то не хватает. Я хочу иметь возможность нажимать Cmd+B при редактировании файла Python "myfile.py" в Sublime Text 2.
Это должно открыть оболочку Python, которая загружает мой файл и возвращает меня в интерактивное приглашение, чтобы было доступно пространство имен в моем скрипте Python.
Настройка -i
опция в настройке сборки по-прежнему закрывает интерпретатор (см. ниже)
> 81
> >>> [Finished in 0.1s]
Я скачал SublimeREPL, но я не уверен, как установить -i
вариант.
Любая помощь приветствуется
5 ответов
Хорошо, спасибо sneawo за подсказки! Вот мой первый шанс сделать это.
Шаг 1. Создайте плагин pydev (из Tools->New Plugin), который создает команду 'pydev'
import sublime, sublime_plugin
class PydevCommand(sublime_plugin.WindowCommand):
def run(self):
self.window.run_command('set_layout', {"cols":[0.0, 1.0], "rows":[0.0, 0.5, 1.0], "cells":[[0, 0, 1, 1], [0, 1, 1, 2]]})
self.window.run_command('repl_open',{"type": "subprocess",
"encoding": "utf8",
"cmd": ["python2.7", "-i", "-u", "$file"],
"cwd": "$file_path",
"syntax": "Packages/Python/Python.tmLanguage",
"external_id": "python2.7"
})
self.window.run_command('move_to_group', { "group": 1 })
Шаг 2. Создайте новую привязку ключа в Preferences->Key-Bindings-user
{"keys": ["f5"], "command": "pydev"}
Теперь нажмите f5 (на Mac это будет fn+f5 по умолчанию). Это запустит интерпретатор python на вкладке repl, установит горизонтальное расположение для двух окон и переместит вкладку repl в нижнее окно.
Это довольно простой способ, поскольку он не проверяет текущий макет и просто устанавливает макет на 2-горизонтальный. Вероятно, приведёт в порядок код, чтобы выполнить некоторую проверку и просто добавить горизонтальное окно к существующему макету. Также было бы хорошо удалить горизонтальный буфер, когда вкладка repl закрыта.
Попробуйте обновить ваши пользовательские сочетания клавиш:
[
{ "keys": ["super+shift+r"], "command": "repl_open",
"caption": "Python",
"mnemonic": "p",
"args": {
"type": "subprocess",
"encoding": "utf8",
"cmd": ["python", "-i", "-u", "$file"],
"cwd": "$file_path",
"syntax": "Packages/Python/Python.tmLanguage",
"external_id": "python"
}
}
]
Ответ гораздо проще, чем ваш подход. Просто определите новый "профиль" сборки (Build system), в нем вы захватите точно сборку Python по умолчанию, кроме изменения опции -u
в -ui
{ "cmd": ["C:\\python33\\python.exe", "-ui", "$file"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "selector": "source.python" }
Я хотел добавить быстрое редактирование ответа @user1936097.
Я скопировал эту идею, но хотел вместо этого загрузить IPython (код работает как обычно для загрузки стандартного Python). Я заменил...
self.window.run_command('repl_open',{"type": "subprocess",
"encoding": "utf8",
"cmd": ["python2.7", "-i", "-u", "$file"],
"cwd": "$file_path",
"syntax": "Packages/Python/Python.tmLanguage",
"external_id": "python2.7"
})
с...
self.window.run_command('repl_open', {
"type": "subprocess",
"encoding": "utf8",
"autocomplete_server": true,
"cmd": ["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"}
})
Но это не сработало.
Линия "autocomplete_server": true
казалось, проблема. Если я удалил его, код запустился, но IPython открыл закрытое. Если бы я оставил это, ничего не случилось.
Я наконец позаимствовал найденную в файле команду /SublimeREPL/config/Python/Default.sublime-commands
и придумал...
self.window.run_command('run_existing_window_command', {
"id": "repl_python_ipython",
"file": "config/Python/Main.sublime-menu"
})
Это сделало окончательный код плагина:
import sublime, sublime_plugin
class PydevCommand(sublime_plugin.WindowCommand):
def run(self):
self.window.run_command('set_layout', {"cols":[0.0, 1.0], "rows":[0.0, 0.5, 1.0], "cells":[[0, 0, 1, 1], [0, 1, 1, 2]]})
self.window.run_command('run_existing_window_command', {
"id": "repl_python_ipython",
"file": "config/Python/Main.sublime-menu"
})
self.window.run_command('move_to_group', { "group": 1 })
Присвойте это привязке клавиш, как показано в исходном сообщении, и теперь вы будете загружать IPython вместо стандартного Python!
Вот простой способ создать новую систему сборки.
{
"cmd": ["C:\\python33\\python.exe", "-u", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python"
}
Затем сохраните систему сборки как Python3 или Python27 и выберите ее по умолчанию.