나는 쓰고있다~/.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
bind
readline 함수에 대한 키 바인딩을 사용해야 합니다 . bind -p
현재 바인딩을 모두 나열하며 다음을 포함해야 합니다.
"\C-u": unix-line-discard
따라서 동일한 기능을 호출하려면 다음을 사용하십시오.
bind '"\ej":unix-line-discard'
답변2
Ctrl+ 명령 및 삽입 모드에서 u위젯 호출 :unix-line-discard
vi
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"'