2020年2月29日 星期六

bash history keybind

bash 有一個 hot key 可以往前搜尋按過的命令, ctrl+r, 但是要往後找好像做不到, 朋友告知了一個好作法, 可以很方便的尋找按過的命令, 需要安裝 fzf, fd。

apt-get install fzf fd-find

list 1. ~/.bashrc
1 [[ -f /usr/share/doc/fzf/examples/key-bindings.bash ]] && . /usr/share/doc/fzf/examples/key-bindings.bash
2 [[ -f /usr/share/doc/fzf/examples/completion.bash ]] && . /usr/share/doc/fzf/examples/completion.bash
3 export FZF_DEFAULT_COMMAND="fd -H --exclude={.git,.hg}"
4 export FZF_DEFAULT_OPTS="--layout=reverse --select-1 --exit-0 --bind 'ctrl-o:execute(vim {})+abort'"
5 export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND -t f"
6 export FZF_CTRL_T_OPTS="--tabstop=2 --bind ?:toggle-preview --preview '(bat --number --color=always {}) 2> /dev/null | head -100' --preview-window=right:hidden"
7 export FZF_ALT_C_COMMAND="fd -H -t d --exclude={.git,.hg}"
8 export FZF_ALT_C_OPTS="--layout=reverse --select-1 --exit-0"

再把 list 1 的指令貼在 ~/.bashrc, 就可以有方便的 ctrl+r 搜尋功能, fig 1 顯示在按下 ctrl+r 之後, 可以用方向按鍵來選擇要執行的命令。

ctrl+r 再按下搜尋的關鍵字之後, 就可以看到 fig 1 的列表。
ex: ctrl + r vi, 就會顯示出之前按下 vi 相關的命令。

fig 1. ctrl + r

沒有留言:

張貼留言

使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。

我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。