Связать Ctrl- \ in inputrc?

Я с этим работаю и не могу заставить его работать. Использование Ctrl + V в терминале правильно выводит ^\ для этой комбинации, поэтому оно должно быть узнаваемым.

Поскольку у меня есть Ctrl + \ bound to suspend-frame в emacs, я хотел бы иметь возможность быстро вернуться на передний план с помощью другого нажатия Ctrl + \ .

Я считаю, что это единственная жизнеспособная комбинация:

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

Если я нажимаю Enter после Ctrl + V для этой комбинации, я получаю следующий вывод, который может быть полезен:

 bash: $'\034': command not found 

  • Bash отображает международные символы как escape-последовательности
  • Как правильно указать .inputrc?
  • Восстановить последний аргумент последней команды в режиме bash 'vi
  • Входы ввода-вывода GNU readline vi-insert отображаются, похоже, не действуют
  • Удалить весь аргумент в текущей командной строке bash
  • bash - неправильные привязки последовательности клавиш с контролем + alt + space
  • отменить по умолчанию ключ от inputrc
  • опция tmux `xterm-keys` не включает управление + стрелки
  • One Solution collect form web for “Связать Ctrl- \ in inputrc?”

    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 и новую строку, привяжите ключ к команде оболочки. Вы не можете сделать это из .inputrc , который применяется ко всем приложениям readline, а не только к bash. Вместо этого определите привязку bash в вашем .bashrc :

     bind -x '"\C-\\": "fg"' 
    Linux и Unix - лучшая ОС в мире.