我打赌你遇到了和我一样的问题。我经常使用shell。对于python
,ruby
(irb
),mongo
...我使用crt+a
这样的简写来开始,crt+e
at最后,crt+k
清理到最后。
但我想念一件事。当你在ruby shell或python shell中定义一个多行块而你在一个语句中写错了什么时,你必须重写几乎所有东西,当你有超过3行时,up arrow
带来的历史变得一团糟。
任何使这不那么痛苦的提示?
答案 0 :(得分:3)
Pry(一个Ruby REPL)旨在让这种事情变得不那么痛苦。有几种方法可以解决这种情况:
(1)使用amend-line来修复该行。
(2)使用edit command将当前输入缓冲区转储到编辑器中,然后在保存/退出后将编辑器中所做的更改带回Pry会话。
(3)使用hist --replay重播然后更正REPL.strong文本中的行
在这些选项中,我通常会使用amend-line
(如果这是一个简单的错误),edit
如果它涉及的更多。
玩得开心!!
答案 1 :(得分:1)
查找可以将代码区域发送到python,ruby或mongo会话的文本编辑器。 Emacs可以做到这一点;我确信vim和其他编辑也可以这样做。
这样,您可以编辑和保存您的工作,并仍然可以利用交互式shell。
下面是一个示例,其中random_pick
在文本文件中定义,选择该区域并按Ctrl-c Ctrl-.
将其发送到IPython。它出现在以In [5]:
开头的行上的IPython中。下一行显示IPython现在知道random_pick
。
对于IPython(与默认的Python shell相反),还有%cpaste
,它允许您将多行代码块剪切并粘贴到shell中:
In [54]: %cpaste
Pasting code; enter '--' alone on the line to stop.
:def random_pick(choices,probs):
cutoffs=np.cumsum(probs)
idx=cutoffs.searchsorted(random.uniform(0,cutoffs[-1]))
return choices[idx]
--
:::::::::
在[55]中:
答案 2 :(得分:1)
对于红宝石,看看撬是否适合你:http://pry.github.com
pry是irb的替代品,它有一个非常灵活的hist命令来检索和重放历史记录。它提供了对更改多行语句的更多控制。请参阅此要点以了解使用pry可以执行的操作:https://gist.github.com/972057
答案 3 :(得分:0)
对于Python,只需使用随附的IDLE。如果将光标置于终端窗口中的多行语句中并按Enter键,则整个语句将复制到输入行以进行编辑。