![readline에서 ESC와 동일한 작업을 수행하도록 Ctrl-C를 다시 바인딩할 수 있나요?](https://linux55.com/image/13462/readline%EC%97%90%EC%84%9C%20ESC%EC%99%80%20%EB%8F%99%EC%9D%BC%ED%95%9C%20%EC%9E%91%EC%97%85%EC%9D%84%20%EC%88%98%ED%96%89%ED%95%98%EB%8F%84%EB%A1%9D%20Ctrl-C%EB%A5%BC%20%EB%8B%A4%EC%8B%9C%20%EB%B0%94%EC%9D%B8%EB%94%A9%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
나는 set -o vi
bash()에서 vi 모드를 사용하기 시작했고 내 노트북에는 Esc 키(멍청한 터치 바...)가 없어서 명령줄에서 삽입 모드를 떠나는 것이 짜증스럽습니다. Vim에서는 Ctrl-C를 Esc 키와 동일한 기능으로 다시 매핑한다는 생각이 들었습니다.
이제 Ctrl-C는 일반적으로 쉘에서 매우 중요한 목적을 가지고 있으므로 해당 키 조합을 Esc에 매핑하는 것은 아마도 좋은 생각이 아니지만 단지 호기심에서 비롯된 것입니다.
readline에서 Esc 키와 동일한 작업을 매핑 Ctrl-C
하거나 수행 할 수 있습니까 ?Ctrl-$something
답변1
이 부분은 추가 설정 없이 readline이나 일반 터미널에서 대신 Ctrl-$something
사용할 수 있습니다 .Ctrl-[
Escape
Ctrl-@
, Ctrl-[A-Z]
, Ctrl-[
, Ctrl-\
및 Ctrl-]
(=> 또는 =>와 같은 터미널 특수 문자가 아닌 경우) 예를 들어 다음과 같이 바인딩할 수도 있습니다 Ctrl-^
.Ctrl-_
Ctrl-D
eof
Ctrl-\
quit
bind '"\C-@": "\e"'
일부 터미널에서는 결합 및 결합을 통해 Ctrl-@
생성되기도 합니다 .Ctrl-`
Ctrl-_
Ctrl-/
또한 이러한 조합은 일반적으로 터미널 에뮬레이터 설정에 따라 대부분의 터미널 Alt-key
에 매핑되므로 바인딩 대신 다음 을 사용할 수 있습니다 .Esc-key
Alt-C
Ctrl-C
Escape
bind '"\ec":"\e"'
이 부분의 경우 tty 드라이버는 Ctrl-C
bash 또는 readline에 도달하기 전에 Ctrl-C
이를 특수 키( )로 처리합니다 . 왜냐하면 readline은 intr
라인 편집기에 들어갈 때 tty 설정을 끄지 않기 때문입니다. ISIG
예를 들어, 물론 항상 이 작업을 수행할 수 있습니다.
stty intr ^]; bind '"\C-C":"\e"'
작업을 중단하고 싶을 때 Ctrl-]
대신 사용하도록 재교육 하지만 이는 분명히 매우 나쁜 생각입니다.Ctrl-C