python "up-button" 命令完成,matlab/julia 样式
python "up-button" command completion, matlab/julia style
我最近从 Matlab 转向了 Numpy,我很喜欢它。但是,我真正喜欢 Matlab 的一个优点是能够完成命令。有两种方法可以做到这一点:
1) 选项卡完成。如果我有一个叫做 foobar(...) 的函数,我可以做 'fo' 它会自动填充 'foobar'
2) "up-button" 完成(我不知道该怎么称呼它)。如果我最近输入了一个命令,例如
'x = linspace(0, 1, 100); A = eye(50);'
然后我希望快速输入相同的命令,以便我可以重新评估它或稍微更改它,然后我只需输入 'x =' 然后按向上键,它将循环显示您之前输入的所有以 [ 开头的命令=32=]。这是 Matlab 中一个非常棒的功能(如果你听说过 Julia,它做得更好,允许你自动重新输入 整个代码块,比如当你正在交互式提示中定义函数)
普通 python 交互 shell 中似乎不存在这两个功能。我相信之前已经讨论过选项卡自动完成功能,并且可能可以使用 .pythonrc 启动脚本和一些模块来启用;但是我还没有找到关于 "up-button" 完成的任何信息。 Python 是否具有基本的向上按钮功能,可以简单地滚动浏览所有以前的命令,但是您不能在命令的开头键入并缩小范围滚动浏览的命令,这有很大的不同。
有谁知道在普通 python 交互式 shell 上获得此功能的方法,而不需要像 IPython 需要单独安装的笔记本这样的花哨东西?
使用 iPython 或其他一些 Python shell。有很多。您甚至可以编写自己的程序来做任何您想做的事情。
- tab 完成。如果我有一个叫做 foobar(...) 的函数,我可以做 'fo' 它会自动填充 'foobar'
真的吗?您使用的 Python 是哪个版本?您是如何获得它的?对于 python 2.7 和 python 3.4,windows 和 Linux 都适用于我的常规 python shell。听起来您的 Python 版本可能没有使用 readline
支持构建,我认为这是此类事情所必需的。
这是我试过的:
>>> sup
在tab
之后变成:
>>> super(
- "up-button" 完成(我不知道该怎么称呼它)。如果我最近输入了一个命令,例如 'x = linspace(0, 1, 100); A = eye(50);',然后我希望快速输入相同的命令,以便我可以重新评估它或稍微更改它,那么我只需输入 'x =',然后按向上和它将循环显示您之前键入的所有以 'x ='.
开头的命令
它被称为 "History search",它在 windows 和 Linux 中的默认 Python shell 中也对我有效。同样,我认为这需要 readline
。
>>> a = 'test'
>>> a
然后我按 up
,我得到:
>>> a = 'test'
您也可以按 Ctrl+r
,然后开始输入。这将在历史记录中搜索包含您键入的内容的最后一个命令。所以,例如:
>>> a = 'test'
>>> b = 5
>>> c = a
然后ctrl+r
:
>>>
forward-i-search1`b: b = 5
然后点击 Enter
执行该命令。
>>>
>>> b = 5
>>>
如果匹配项不是您想要的,您可以键入更多内容,或反复按 Ctrl+r
以循环匹配项。
编辑:
看起来这是 Python 的内置 Mac Os X 版本的一个已知问题。由于 readline 是 GPL,因此它不附带 readline。相反,它包括不完全兼容的 libedit。有关如何让它在 Mac Os X here
上工作的说明
Tab 补全不是 python 2.x 解释器的标准功能。一个特定的发行版(打算 Linux 发行版)可能带有启用制表符完成的初始化文件。另一方面,python 3.x 默认启用自动完成功能。
要在 2.x 中启用制表符补全,您需要指示解释器关于 loading some startup code, using an environment variable
export PYTHONSTARTUP=$HOME/.whatever
您要放入启动文件的代码各不相同,但用于启用制表符补全 the docs have
try:
import readline
except ImportError:
print "Module readline not available."
else:
import rlcompleter
readline.parse_and_bind("tab: complete")
最终来到你的 ast 问题,你命名为 “向上按钮”命令完成,matlab/julia 风格 ,IPython 有它,我'我不知道实现它的模块,即使在我看来我一个月前在 comp.lang.python 上读到过关于这样一个野兽的东西。
在你的问题中你引用了IPython的notebook...可能需要提醒的是你不需要notebook界面来使用IPython,它可以用来即使在文本控制台中也能发挥全部潜力。
我最近从 Matlab 转向了 Numpy,我很喜欢它。但是,我真正喜欢 Matlab 的一个优点是能够完成命令。有两种方法可以做到这一点:
1) 选项卡完成。如果我有一个叫做 foobar(...) 的函数,我可以做 'fo' 它会自动填充 'foobar'
2) "up-button" 完成(我不知道该怎么称呼它)。如果我最近输入了一个命令,例如 'x = linspace(0, 1, 100); A = eye(50);' 然后我希望快速输入相同的命令,以便我可以重新评估它或稍微更改它,然后我只需输入 'x =' 然后按向上键,它将循环显示您之前输入的所有以 [ 开头的命令=32=]。这是 Matlab 中一个非常棒的功能(如果你听说过 Julia,它做得更好,允许你自动重新输入 整个代码块,比如当你正在交互式提示中定义函数)
普通 python 交互 shell 中似乎不存在这两个功能。我相信之前已经讨论过选项卡自动完成功能,并且可能可以使用 .pythonrc 启动脚本和一些模块来启用;但是我还没有找到关于 "up-button" 完成的任何信息。 Python 是否具有基本的向上按钮功能,可以简单地滚动浏览所有以前的命令,但是您不能在命令的开头键入并缩小范围滚动浏览的命令,这有很大的不同。
有谁知道在普通 python 交互式 shell 上获得此功能的方法,而不需要像 IPython 需要单独安装的笔记本这样的花哨东西?
使用 iPython 或其他一些 Python shell。有很多。您甚至可以编写自己的程序来做任何您想做的事情。
- tab 完成。如果我有一个叫做 foobar(...) 的函数,我可以做 'fo' 它会自动填充 'foobar'
真的吗?您使用的 Python 是哪个版本?您是如何获得它的?对于 python 2.7 和 python 3.4,windows 和 Linux 都适用于我的常规 python shell。听起来您的 Python 版本可能没有使用 readline
支持构建,我认为这是此类事情所必需的。
这是我试过的:
>>> sup
在tab
之后变成:
>>> super(
- "up-button" 完成(我不知道该怎么称呼它)。如果我最近输入了一个命令,例如 'x = linspace(0, 1, 100); A = eye(50);',然后我希望快速输入相同的命令,以便我可以重新评估它或稍微更改它,那么我只需输入 'x =',然后按向上和它将循环显示您之前键入的所有以 'x ='. 开头的命令
它被称为 "History search",它在 windows 和 Linux 中的默认 Python shell 中也对我有效。同样,我认为这需要 readline
。
>>> a = 'test'
>>> a
然后我按 up
,我得到:
>>> a = 'test'
您也可以按 Ctrl+r
,然后开始输入。这将在历史记录中搜索包含您键入的内容的最后一个命令。所以,例如:
>>> a = 'test'
>>> b = 5
>>> c = a
然后ctrl+r
:
>>>
forward-i-search1`b: b = 5
然后点击 Enter
执行该命令。
>>>
>>> b = 5
>>>
如果匹配项不是您想要的,您可以键入更多内容,或反复按 Ctrl+r
以循环匹配项。
编辑:
看起来这是 Python 的内置 Mac Os X 版本的一个已知问题。由于 readline 是 GPL,因此它不附带 readline。相反,它包括不完全兼容的 libedit。有关如何让它在 Mac Os X here
上工作的说明Tab 补全不是 python 2.x 解释器的标准功能。一个特定的发行版(打算 Linux 发行版)可能带有启用制表符完成的初始化文件。另一方面,python 3.x 默认启用自动完成功能。
要在 2.x 中启用制表符补全,您需要指示解释器关于 loading some startup code, using an environment variable
export PYTHONSTARTUP=$HOME/.whatever
您要放入启动文件的代码各不相同,但用于启用制表符补全 the docs have
try:
import readline
except ImportError:
print "Module readline not available."
else:
import rlcompleter
readline.parse_and_bind("tab: complete")
最终来到你的 ast 问题,你命名为 “向上按钮”命令完成,matlab/julia 风格 ,IPython 有它,我'我不知道实现它的模块,即使在我看来我一个月前在 comp.lang.python 上读到过关于这样一个野兽的东西。
在你的问题中你引用了IPython的notebook...可能需要提醒的是你不需要notebook界面来使用IPython,它可以用来即使在文本控制台中也能发挥全部潜力。