안녕하세요, xfce4-terminal의 키 매핑을 약간 변경하고 싶습니다. 아마도 Xterm.VT100.translations를 .Xresources에 추가하는 것과 같습니다.
특히 마지막 단어를 삭제하려면 ctrl-backspace를 사용하고 다음 단어를 삭제하려면 ctrl-delete를 사용하고 싶습니다.
보너스: 백스페이스, 삭제, 왼쪽 화살표, 오른쪽 화살표에 Alt를 Ctrl(반복 기능)처럼 사용하고 싶습니다.
xfce4-terminal에서 이러한 작업 전체 또는 일부를 어떻게 수행할 수 있습니까?
편집: 지금까지 진행 상황: 저는 readline 라이브러리와 bash 내장 함수 "bind"를 사용하여 키 시퀀스를 readline 함수에 매핑하는 bash를 사용하고 있습니다. 나에게 필요한 기능은 "shell-kill-word"와 "shell-backward-kill-word"입니다. 원칙적으로 다음과 같이 할 수 있어야 합니다.
"\C-Rubout":shell-backward-kill-word
"\C-Delete":shell-kill-word
"\M-Rubout":shell-backward-kill-word
"\M-Delete":shell-kill-word
그러나 xfce4 터미널 에뮬레이터 또는 프로세스의 일부 업스트림 구성 요소(창 관리자, xfwm4, Xorg 프로그램 자체?)가 협력하지 않습니다. 일반적으로 메타키는 이스케이프 문자로 변환됩니다. 예를 들면 다음과 같습니다.
"\ey":shell-kill-word <-- Meta + y kills next word
하지만 백스페이스와 삭제 키를 사용하는 데에는 운이 없었습니다. 키보드의 백스페이스, 삭제 및 제어 키 조합에 의해 생성되는 두 개의 터미널 에뮬레이터 xfce4-terminal 및 xterm에 대한 키코드를 테스트했습니다. emacs의 Ch Cl 명령에 따르면 다음과 같습니다.
xterm:
backspace: DEL
delete: \e[3~
\C-backspace: \C-h
\C-delete: \e[3;5~
\M-backspace: y-umlaut (y with two dots over it)
\M-delete: nothing
xfce4-terminal:
backspace: DEL
delete: \e[3~
\C-backspace: DEL
\C-delete: \e[3;5~
\M-backspace: \e DEL
\M-delete: nothing
특히 xfce4-terminal에서는 \C-backspace를 shell-backword-kill-word에 바인딩하는 것이 불가능합니다. 왜냐하면 일반 백스페이스 키와 정확히 동일한 키코드를 보내기 때문입니다. 그리고 키코드를 전혀 전송하지 않기 때문에 \M-delete를 shell-kill-word에 바인딩하는 것은 불가능합니다.
Linux로 전환하고 모든 하드웨어/소프트웨어 호환성 문제를 처리해야 하는 한 가지 (큰) 이유는 Linux가 사용자 정의가 가능하기 때문입니다. 예를 들어, 저는 창을 클릭하는 대신 창 위로 마우스를 가져가면 창에 초점이 맞춰지는 것을 좋아합니다. 제 생각에는 최신 Linux 배포판에서 이러한 문제를 해결하는 것이 최우선 과제입니다. 불행하게도 이 문제를 해결하기 위한 다음 단계를 수행하기 위해 X 및 xfce에 대한 모든 배경 조사를 수행할 시간이 없습니다. Xorg 생태계에 대해 더 많이 아는 사람이 나에게 올바른 방향을 알려줄 수 있습니까? 어쩌면 더 나은 작업을 수행하는 대체 터미널 에뮬레이터가 있을까요?
마지막 정보: X 창에서 emacs를 실행하면 키코드 중 하나만 제외하고 모두 선택됩니다.
backspace: <backspace>
delete: <delete>
\C-backspace: <C-backspace>
\C-delete: <C-delete>
\M-backspace: <M-backspace>
\M-delete: nothing
답변1
좋습니다. 이것은 + , + 및 + , + .zshrc
에 대한 내 내용입니다.ctrl←ctrl→alt←alt→
## use Ctrl <- and Ctrl -> for jumping to word-beginnings on the CL
bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
## the same for alt-left-arrow and alt-right-arrow
bindkey '^[[1;3C' forward-word
bindkey '^[[1;3D' backward-word
crtl내 시스템에서는 + del및 + 에 대해 작동 하지만 아직 + 및 +에 대한 키를 alt찾지 못했습니다 .delctrlbackspacealtbackspace
bindkey '^[[3;5~' kill-word
bindkey '^[[3;3~' kill-word
CtrlV+를 누른 후 원하는 키 조합을 입력하면 각 키 조합을 나타내는 홀수 문자를 입력할 수 있습니다 . 예를 들어, Ctrl+를 누른 V다음 Ctrl+ ←를 누르면^[[1;5D
답변2
글쎄요, 키 바인딩이 악몽이었기 때문에 xfce4-terminal을 포기하고 xterm으로 돌아가야 했습니다. 저는 실제로 탭보다는 여러 개의 창을 사용하는 것을 선호하는 것으로 나타났습니다. xterm<-->bash에 대한 키 바인딩을 위해 내가 한 일은 다음과 같습니다.
# ctrl-backspace
"\C-h":shell-backward-kill-word
# meta-backspace
"ÿ":shell-backward-kill-word
# ctrl-delete
"\e[3;5~":shell-kill-word
# meta-delete
# not detected
# ctrl-right-arrow
"\e[1;5C":shell-forward-word
# ctrl-left-arrow
"\e[1;5D":shell-backward-word
# meta-right-arrow
"\e[1;3C":forward-word
# meta-left-arrow
"\e[1;3D":shell-backward-word
내가 놓친 유일한 것은 메타 제거입니다. 무엇을 할 수 있습니까?