对于那些不在 ubuntu 上进行 python 编程的人来说,ipython 是一个强大的 python shell,但它有一个惊人的特性,它不仅可以根据已知名称自动完成(即,当你按下 tab 时,它的方式与 bash 相同),但是,如果您开始键入命令并按下,它不会滚动浏览整个历史记录(如 bash),而只会滚动浏览以相同字母字符串开头的最近命令。
因此,如果您执行了一些长命令,例如scp -r -P 8000 -l user server.com:~/dir/to/copy ./
后跟其他几个命令。如果您开始输入scp
并按下,bash 将显示之前显示的命令,而不是滚动浏览整个历史记录。
bash 有这样的扩展吗?或者有没有提供这种功能的外壳?
Bash 也具有该功能,但默认情况下未启用。您可以通过将其粘贴到以下位置将其绑定到上/下光标
~/.inputrc
:我更喜欢将它绑定到Ctrl+up/down 代替:
编辑:要保留ctrl+left并ctrl+right在整个单词中前后移动,还要在
~/.inputrc
文件中包含这些行:尝试按Ctrl+ R,然后输入几个字母。它也以相反的顺序工作。
并且不要忘记 bash 中奇妙的历史扩展快捷方式。1
我从联机帮助页中发布了一些摘录,以防您没有将它们纹在手臂上(或记住它们)。
我经常使用引用上一个命令的最后一个“单词”的能力。例如,
在这两种情况下,
!$
匹配/foo/shmoo/adir.horribilus.foo
.1 ...取自csh。为了减轻 bash 功能盗窃的范围,bash 手册页说
所以,它是“相似的”。任何这些都可能闯入
csh
或tcsh
。或者您没有使用的任何 csh 后代,因为它不如bash
.有一个类似于上面提到的@ak2 的替代方法,但您不必创建新的 .inputrc 文件。
相反,如果您有 sudo 权限,则可以在 /etc/inputrc 文件中启用它。此文件中包含各种键盘设置,包括历史搜索功能(至少适用于 18.04)。/etc/inputrc 的摘录是:
只需使用 sudo 文件编辑器(例如 $ sudo vim)取消底部两行的注释,一个新的终端会话将具有历史搜索功能(适用于所有用户)。