Bash
在 inputrc 中綁定 Ctrl-?
我一直在糾結這個,似乎無法讓它發揮作用。在終端中使用
Ctrl
+正確輸出此組合,因此它應該是可辨識的。V``^\
由於我
Ctrl
+\
綁定到 emacs 中的暫停幀,我希望能夠通過再次按下Ctrl
+快速回到前台\
。我相信這是唯一可行的組合:
"\C-\\": "fg\n"
如果我
Enter
在Ctrl
+之後點擊V
這個組合,我會得到以下輸出,這可能很有用:bash: $'\034': command not found
Ctrl+\ 是導致終端發送信號 (SIGQUIT) 的控製字元之一,如 Ctrl+C (SIGINT) 和 Ctrl+Z (SIGTSTP)。您可以執行
stty -a
以顯示哪些字元對終端具有特殊含義;有關更多詳細資訊,請參閱在Linux 的外殼/終端上清除/擦除輸入錯誤的不可見密碼。結果是,當您按Ctrl
+時\
,bash 在其標準輸入上看不到字元,而是看到了一個信號,並且沒有通過鍵綁定機制。您可以使用命令關閉終端中字元的含義
stty quit undef
。如果這樣做,bash 會將字元視為輸入,並且您的鍵綁定將生效。
Ctrl
要將+安排為\
bash 綁定但在執行命令時具有正常的終端綁定,請在執行命令之前和之後更改終端設置。preexec () { stty quit '^\' } precmd () { stty quit undef } preexec_invoke_exec () { [ -n "$COMP_LINE" ] && return # do nothing if completing [ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return # don't cause a preexec for $PROMPT_COMMAND local this_command=`HISTTIMEFORMAT= history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//"`; preexec "$this_command" } trap 'preexec_invoke_exec' DEBUG PROMPT_COMMAND='precmd'
與其創建密鑰類型和換行符,不如將密鑰
fg
綁定到 shell 命令。你不能這樣做 from.inputrc
,它適用於所有 readline 應用程序,而不僅僅是 bash。相反,在您的 bash 中定義一個綁定.bashrc
:bind -x '"\C-\\": "fg"'