如何更改bash历史记录完成以完成已有的内容?

如何更改bash历史记录完成以完成已有的内容?

问题描述:

我发现了一个命令几个月前,使我的bash历史自动完成上按向上箭头时什么是已经上线:如何更改bash历史记录完成以完成已有的内容?

$ vim fi 

$ vim file.py 

我我想在我的新电脑上设置它,因为它在保存大量历史记录时节省了大量时间。问题是,我不能为了我的生活记住它被提及的地方,并且通过阅读无尽的bash参考资料和教程不幸也没有帮助。

有人知道命令吗?

大概就像

 
# ~/.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语句检查交互模式)

通常情况下,上下都绑定到的ReadLine功能previous-history和分别为​​。我宁愿将PgUp/PgDn绑定到这些函数,而不是取代Up/Down的正常操作。

 
# ~/.inputrc 
"\e[5~": history-search-backward 
"\e[6~": history-search-forward 

修改~/.inputrc,重新启动您的外壳或使用按Ctrl +X按Ctrl +[R告诉它之后重新读取~/.inputrc


顺便说一句,如果你正在寻找相关文件:

Bash使用The GNU Readline Library的shell提示符和历史。

+0

感谢您的回答。这听起来很熟悉,但不幸的是不适合我。将它放入.inputrc中并不会改变任何内容,并将其放入.bashrc中,以阻止箭头执行任何操作。有任何想法吗? – blokkie 2009-06-23 01:31:12

+0

没关系。 history-complete- *不存在;只有历史搜索功能存在。谢谢! – blokkie 2009-06-23 01:32:59

+0

啊,我明显错误地列出了前两个例子......但最后一个是正确的。我会解决这个问题。 – ephemient 2009-06-23 01:34:18

您可能需要启用bash完成。

检查

  • /etc/profile
  • /etc/bash.bashrc
  • ~/.bashrc

,看是否有上述文件的源/etc/bash_completion的。即

 
. /etc/bash_completion 

如果/etc/bash___completion没有被任何你需要将它添加到其中的一个上述文件的来源。

如果您希望机器上的所有bash用户都有bash完成,请从/etc/bash.bashrc获取源/etc/bash_completion

如果只是你想要bash完成,请从你的~/.bashrc来源/etc/bash_completion

随着ohmyzsh,在你的.zshrc使用:

bindkey '^[OA' history-search-backward 
bindkey '^[OB' history-search-forward 

重装,source ~/.zshrc或重新启动终端。

来源:https://superuser.com/a/418299/71680

更新.inputrc文件有以下几点:

"\C-[OA": history-search-backward 
"\C-[[A": history-search-backward 

"\C-[OB": history-search-forward 
"\C-[[B": history-search-forward 

如果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 

这也是对同一主题:My cursor keys do not work也是这样的xterm: special keys