几个月前我发现了一个命令,当按下向上箭头时,我的bash历史记录会自动完成已经在线上的命令:
$ vim fi
按↑
$ vim file.py
我想在我的新电脑上设置它,因为它可以节省大量的时间来保持一个伟大的历史。问题是,我不能为我的生活记住它被提到的地方,阅读无尽的bash引用和教程不幸也没有帮助。
有人知道命令吗?
答案 0 :(得分:218)
可能类似
# ~/.inputrc "\e[A": history-search-backward "\e[B": history-search-forward
或等效,
# ~/.bashrc if [[ $- == *i* ]] then bind '"\e[A": history-search-backward' bind '"\e[B": history-search-forward' fi
(if语句检查交互模式)
通常,Up和Down分别与Readline函数previous-history
和next-history
绑定。我更喜欢将PgUp / PgDn绑定到这些函数,而不是取代Up / Down的正常操作。
# ~/.inputrc "\e[5~": history-search-backward "\e[6~": history-search-forward
修改~/.inputrc
后,重新启动shell或使用 Ctrl + X , Ctrl + R 告诉它重新阅读~/.inputrc
。
顺便说一句,如果您正在寻找相关文档:
Bash使用The GNU Readline Library作为shell提示符和历史记录。
答案 1 :(得分:4)
使用以下内容更新.inputrc:
"\C-[OA": history-search-backward
"\C-[[A": history-search-backward
"\C-[OB": history-search-forward
"\C-[[B": history-search-forward
答案 2 :(得分:1)
使用ohmyzsh,在 .zshrc :
中使用此功能bindkey '^[OA' history-search-backward
bindkey '^[OB' history-search-forward
要重新加载,source ~/.zshrc
或重新启动终端。
答案 3 :(得分:1)
如果set enable-keypad on
中的~/.inputrc
与某些st(suckless simple terminal)用户一样,请注意箭头键处于键盘模式。 Ubuntu附带了这个有用的/usr/share/doc/bash/inputrc.arrows
:
# This file controls the behaviour of line input editing for
# programs that use the Gnu Readline library.
#
# Arrow keys in keypad mode
#
"\C-[OD" backward-char
"\C-[OC" forward-char
"\C-[OA" previous-history
"\C-[OB" next-history
#
# Arrow keys in ANSI mode
#
"\C-[[D" backward-char
"\C-[[C" forward-char
"\C-[[A" previous-history
"\C-[[B" next-history
#
# Arrow keys in 8 bit keypad mode
#
"\C-M-OD" backward-char
"\C-M-OC" forward-char
"\C-M-OA" previous-history
"\C-M-OB" next-history
#
# Arrow keys in 8 bit ANSI mode
#
"\C-M-[D" backward-char
"\C-M-[C" forward-char
"\C-M-[A" previous-history
"\C-M-[B" next-history
所以我不确定你是否需要所有这些,但是在你的~/.inputrc
中可能没什么坏处的:
# Arrow keys in keypad mode
"\C-[OA": history-search-backward
"\C-[OB": history-search-forward
"\C-[OC": forward-char
"\C-[OD": backward-char
# Arrow keys in ANSI mode
"\C-[[A": history-search-backward
"\C-[[B": history-search-forward
"\C-[[C": forward-char
"\C-[[D": backward-char
答案 4 :(得分:-3)
您可能需要启用bash完成功能。
检查
/etc/profile
/etc/bash.bashrc
~/.bashrc
查看上述任何文件是否来源/etc/bash_completion
。即。
. /etc/bash_completion
如果/etc/bash___completion
未被上述任何文件采购,则需要将其添加到其中一个文件中。
如果您希望计算机上的所有bash用户都完成bash,请从/etc/bash_completion
获取/etc/bash.bashrc
。
如果只是您想要bash完成,请从您的/etc/bash_completion
中获取~/.bashrc
。