Alt-c를 Ctrl-u에 매핑

Alt-c를 Ctrl-u에 매핑

나는 쓰고있다~/.bashrc문서.
Alt-c를 Ctrl-u에 바인딩하고 싶습니다.
그래서 Alt-c를 누르면. Ctrl-u 기능이 실행되어야 합니다.
Ctrl-u는 터미널의 텍스트를 지웁니다. 이제 Alt-c를 눌러야 합니다.

다음 텍스트가 있습니다.

# Avoids default mapping.
# set bind-tty-special-chars off
# Solves error: 'bind editing not enabled.'
# But prevented me from using Control-p/n.
set -o vi; 
# Up Directory (Alt-j)
bind '"\ej": "cd ..;\r"';

Alt-j를 코드에 성공적으로 바인딩"CD..;"
하지만 Alt를 Ctrl 매핑에 매핑하는 방법을 모르겠습니다.

아마 "와 같을 것이다.세트 -o vi".하지만 바인딩 오류가 발생하지 않고는 제거할 수 없습니다. 또한 설정을 해제하세요."세트 -o vi"터미널에서 더 이상 탭을 누를 수 없다는 부작용이 있습니다. 또한 emacs와 vi 중 하나를 선택할 뿐이라고 합니다. 그래서 간단히 -o vi로 설정할 수 있다면 미래를 위해 생각합니다. 좋아요, 왜냐면 제가 완전히 Wim에 있어요.

set -o vi 이전에 다음을 사용해 보았지만 작동하지 않습니다.

# Clear Text (Alt-c)
bind '"\ec": "Control-u:"';

하지만 상관없어.
Alt-c를 Ctrl-u에 매핑하는 방법은 무엇입니까?

답변1

bindreadline 함수에 대한 키 바인딩을 사용해야 합니다 . bind -p현재 바인딩을 모두 나열하며 다음을 포함해야 합니다.

"\C-u": unix-line-discard

따라서 동일한 기능을 호출하려면 다음을 사용하십시오.

bind '"\ej":unix-line-discard'

답변2

Ctrl+ 명령 및 삽입 모드에서 u위젯 호출 :unix-line-discardvi

bash-5.2$ set -o vi
bash-5.2$ bind -pm vi-command | grep -iw c-u
"\C-u": unix-line-discard
bash-5.2$ bind -pm vi-insert | grep -iw c-u
"\C-u": unix-line-discard

+를 바인딩하는 동일한 위젯을 호출하도록 하여 Alt동일한 작업을 수행 할 수 있습니다.c

bind -m vi-command '"\ec": unix-line-discard'
bind -m vi-insert  '"\ec": unix-line-discard'

아니면 문자로 번역하세요 ^U:

bind -m vi-command '"\ec": "\C-u"'
bind -m vi-insert  '"\ec": "\C-u"'

관련 정보