最近我开始使用Emacs作为Python IDE,它不是很直观......我现在正在努力解决的问题是当使用C-c C-c评估缓冲区时如何将命令行参数传递给下级python shell。谢谢你的帮助。
答案 0 :(得分:7)
这似乎不太容易;由python.el
模块管理的劣质流程旨在持久化python-send-buffer
(和朋友)的许多调用。我发现的一个解决方案就是编写自己的函数,在下级过程中以编程方式设置sys.argv
:
(defun python-send-buffer-with-my-args (args)
(interactive "sPython arguments: ")
(let ((source-buffer (current-buffer)))
(with-temp-buffer
(insert "import sys; sys.argv = '''" args "'''.split()\n")
(insert-buffer-substring source-buffer)
(python-send-buffer))))
在*scratch*
缓冲区中执行此功能和/或将其保存在.emacs
文件中,然后,如果需要,将其绑定到方便的键序列。 C-c C-a
似乎没有使用python-mode
,所以也许:
(global-set-key "\C-c\C-a" 'python-send-buffer-with-my-args)
该命令将提示您输入要使用的参数,然后将源缓冲区复制到临时缓冲区中,并在其前面添加一个代码片段,将sys.argv
设置为您提供的参数列表,最后将调用{{ 1}}。
上面的代码只是天真地分割你在空格上键入的字符串,所以如果你需要提供包含空格的参数,你需要一个更复杂的算法。