새로 설치된아키텍처Linux, 내 쉘( bash
, zsh
, )은 화살표 키와 + 또는 + 를 tcsh
구별하지 않습니다 .Ctrlarrow keysShiftarrow keys
cat
Ctrl이 명령은 왼쪽 화살표, + Left arrow또는 Shift+에 대해 동일한 코드를 표시합니다 Left arrow.^[[D
이는 셸에서 문자별 변위 및 텍스트 선택을 구성할 수 없기 때문에 짜증나는 일이지만, 여전히 문자별로 탐색할 수 있으므로 중요한 문제는 아닙니다.
그러나 nano에서는 Ctrl및 Shift+가 arrow단어별 이동 및 텍스트 선택에 문제 없이 잘 작동합니다.
정확하게 말씀드리자면, 이번이 처음으로 Arch-Linux를 설치하는 것이므로 이 문제를 일으킨 기본 구성을 잊어버렸을 수도 있습니다.
쉘에서 Ctrl/ Shift+를 어떻게 감지합니까 ?Arrow
--필수 정보를 추가하려면 편집하세요--
zle-line-init() echoti smkx
문제를 해결하지 못하고,
echoti smkx; STTY='-icanon -echo min 0 time 20' od -vtc -tx1
다음을 출력합니다.
no such terminfo capability: smkx
00000000 033 [ D
1b 5b 44
00000003
left및 ctrl+ 의 경우 left,
그리고 echoti rmkx; STTY='-icanon -echo min 0 time 20' od -vtc -tx1
:
no such terminfo capability: rmkx
00000000 033 [ D
1b 5b 44
00000003
left및 ctrl+에 대한left
나는 Arch-linux의 기본 터미널을 사용합니다. 올바르게 이해했다면 linux라고 합니다( echo $TERM
출력에서는 실제 터미널을 마스킹할 linux
필요가 없습니다 )./etc/inittabl
답변1
질문대로포즈를 공격, 이는 ncurses FAQ와 관련이 있을 수 있습니다.커서 키가 작동하지 않습니다.
nano는 터미널을 다음과 같이 초기화합니다.신청방법, 쉘은 그렇지 않지만, 쉘은 그렇지 않습니다.일반 모드.
터미널(에뮬레이터)을 인식하지 못하지만 "일반" 모드에서 SS3(escape-O) 대신 CSI(escape-[)를 잘못 사용할 수 있습니다.
그러나 후속 댓글에서는 상충되는 정보가 제공되었습니다. 작동하지 않는 것으로 지정된 프로그램(bash, tcsh, zsh)은 관련 정보를 얻기 위해 터미널 데이터베이스를 사용하지 않기 때문에 놀라운 일이 아닙니다.수정자 키. 이들 중 일부는 xterm 매뉴얼(특수 키). 이 중 어느 것도 쉘 매뉴얼에 문서화되어 있지 않습니다. "작업"이 진행되는 한 구성에서 리터럴 문자열에 의존합니다. zsh는 터미널 데이터베이스를 사용하려고 시도하지만 확장 정보를 읽지 않으므로 - 참조원천- 운이 없군요.
GUI에서 기본 "터미널"은 아마도 gnome-terminal... TERM
로 설정되어 있을 것입니다 xterm-256color
. 이것은 (대부분) 작동하지만 문서가 있는 경우에는 gnome-terminal
그 단점이 적절하게 언급되어 있을 것으로 예상할 수 있습니다.
nano는 터미널 설명을 사용하여(함수 호출 호출) tigetstr
이 정보를 사용하는 방법을 보여줍니다(참조).원천):
src/nano.c:1233:int get_keycode(const char *keyname, const int standard)
src/nano.c:2389: controlleft = get_keycode("kLFT5", CONTROL_LEFT);
src/nano.c:2390: controlright = get_keycode("kRIT5", CONTROL_RIGHT);
src/nano.c:2391: controlup = get_keycode("kUP5", CONTROL_UP);
src/nano.c:2392: controldown = get_keycode("kDN5", CONTROL_DOWN);
src/nano.c:2394: controlhome = get_keycode("kHOM5", CONTROL_HOME);
src/nano.c:2395: controlend = get_keycode("kEND5", CONTROL_END);
src/nano.c:2397: controldelete = get_keycode("kDC5", CONTROL_DELETE);
src/nano.c:2398: controlshiftdelete = get_keycode("kDC6", CONTROL_SHIFT_DELETE);
src/nano.c:2400: shiftup = get_keycode("kUP", SHIFT_UP);
src/nano.c:2401: shiftdown = get_keycode("kDN", SHIFT_DOWN);
src/nano.c:2403: shiftcontrolleft = get_keycode("kLFT6", SHIFT_CONTROL_LEFT);
src/nano.c:2404: shiftcontrolright = get_keycode("kRIT6", SHIFT_CONTROL_RIGHT);
src/nano.c:2405: shiftcontrolup = get_keycode("kUP6", SHIFT_CONTROL_UP);
src/nano.c:2406: shiftcontroldown = get_keycode("kDN6", SHIFT_CONTROL_DOWN);
src/nano.c:2408: shiftcontrolhome = get_keycode("kHOM6", SHIFT_CONTROL_HOME);
src/nano.c:2409: shiftcontrolend = get_keycode("kEND6", SHIFT_CONTROL_END);
src/nano.c:2411: altleft = get_keycode("kLFT3", ALT_LEFT);
src/nano.c:2412: altright = get_keycode("kRIT3", ALT_RIGHT);
src/nano.c:2413: altup = get_keycode("kUP3", ALT_UP);
src/nano.c:2414: altdown = get_keycode("kDN3", ALT_DOWN);
src/nano.c:2416: altpageup = get_keycode("kPRV3", ALT_PAGEUP);
src/nano.c:2417: altpagedown = get_keycode("kNXT3", ALT_PAGEDOWN);
src/nano.c:2418: altinsert = get_keycode("kIC3", ALT_INSERT);
src/nano.c:2419: altdelete = get_keycode("kDC3", ALT_DELETE);
src/nano.c:2421: shiftaltleft = get_keycode("kLFT4", SHIFT_ALT_LEFT);
src/nano.c:2422: shiftaltright = get_keycode("kRIT4", SHIFT_ALT_RIGHT);
src/nano.c:2423: shiftaltup = get_keycode("kUP4", SHIFT_ALT_UP);
src/nano.c:2424: shiftaltdown = get_keycode("kDN4", SHIFT_ALT_DOWN);
답변2
저는 Thomas Dickey가 댓글에 제공한 답변을 여기에 씁니다. 내가 하고 싶은 작업( ctrl+ 사용 arrow)은 Linux 커널 터미널에서 불가능합니다.
데스크톱 환경(KDE Plasma)을 설치하고 터미널 에뮬레이터(Konsole)를 열면 수정된 키를 문제 없이 사용할 수 있습니다.
모두의 도움에 감사드립니다.