2009-06-23 78 views
114

我發現了一個命令幾個月前,使我的bash歷史自動完成上按向上箭頭時什麼是已經上線:如何更改bash歷史記錄完成以完成已有的內容?

$ vim fi 

$ vim file.py 

我我想在我的新電腦上設置它,因爲它在保存大量歷史記錄時節省了大量時間。問題是,我不能爲了我的生活記住它被提及的地方,並且通過閱讀無盡的bash參考資料和教程不幸也沒有幫助。

有人知道命令嗎?

回答

193

大概就像

 
# ~/.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

-3

您可能需要啓用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

1

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

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

重裝,source ~/.zshrc或重新啓動終端。

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

3

更新.inputrc文件有以下幾點:

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

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

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

相關問題