inputrcにCtrl-\をバインドしますか?

inputrcにCtrl-\をバインドしますか?

私はしばらくこれを台無しにし、正しく動作しないようです。端末で+を使用すると、組み合わせがCtrl正しく出力されるため、認識が可能でなければなりません。V^\

EmacsのストップフレームにCtrl+をバインドしたので、もう一度+を押して前景にすばやく戻ることができます。\Ctrl\

私はこれが可能な唯一の組み合わせだと思います。

"\C-\\": "fg\n"

この組み合わせで+戻るをクリックすると、Enter次のような結果が得られます。これは便利です。CtrlV

bash: $'\034': command not found

ベストアンサー1

Ctrl+\ は、Ctrl+C(SIGINT) や Ctrl+Z(SIGTSTP) など、端末に信号 (SIGQUIT) を送信させる制御文字の 1 つです。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と改行文字を提供する代わりに、キーをシェルコマンドにバインドします。ではこれを行うことはできません.inputrc。これはbashだけでなく、すべてのreadlineアプリケーションにも当てはまります。代わりに、以下でbashバインディングを定義してください.bashrc

bind -x '"\C-\\": "fg"'

おすすめ記事