나는 한동안 이것을 엉망으로 만들었고 제대로 작동하지 않는 것 같습니다. 터미널에서 +를 사용하면 Ctrl조합이 올바르게 출력되므로 인식이 가능해야 합니다.V^\
Emacs의 정지 프레임에 Ctrl+를 바인딩했기 때문에 +를 다시 눌러 전경으로 빨리 돌아갈 수 있기를 원합니다 .\Ctrl\
나는 이것이 가능한 유일한 조합이라고 생각합니다.
"\C-\\": "fg\n"
이 조합에서 + 뒤를 클릭하면 Enter다음과 같은 결과가 나오며 이는 유용할 수 있습니다.CtrlV
bash: $'\034': command not found
답변1
Ctrl+\는 Ctrl+C(SIGINT) 및 Ctrl+Z(SIGTSTP)와 같이 터미널이 신호(SIGQUIT)를 보내도록 하는 제어 문자 중 하나입니다. 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"'