내 라우터는 asuswrt merlin을 실행합니다. /bin/sh는 BusyBox v1.25.1(2017-12-02 00:49:46 EST) 다중 호출 바이너리에 패키지되어 있습니다.
내 질문은 어떻게 커서를 한 단어씩 왼쪽이나 오른쪽으로 이동할 수 있습니까?
Bash를 사용하면 터미널에서 및 각각 매핑되는 option+left
을 실행할 수 있습니다 . option+right
\033b
\033f
내 라우터 케이스에서는 a b
와 .만 인쇄됩니다 f
. 그러면 셸에서 바로가기를 다시 매핑하려면 어떻게 해야 하나요? 아니면 이미 만들어진 바로가기가 있나요?
참고 1: 쉘을 busybox
캡슐화한다고 되어 있으므로 내 질문은 쉘에서 커서를 한 단어씩 이동하는 방법일 수 있습니다.ash
ash
참고 2: Meta+b 및 Meta+F를 사용하기 위해 다음 옵션을 활성화 및 비활성화하려고 시도했지만 성공하지 못했습니다.
참고 3: apple 및 ash 태그 추가
답변1
Meta- F및 Meta-는 B각각 커서를 앞뒤로 이동합니다.
키를 올바르게 전달하지 않는 터미널 또는 연결 체인에 있는 경우( Meta귀하의 경우와 같이) 이는 Esc다음 문자가 보낸 신호가 변경된 키 입력을 의미함을 의미합니다 Meta. 따라서 을 눌렀다가 놓은 다음 Esc또는 을 F눌러 B문자 그대로 원격 터미널에서 앞으로 또는 뒤로 이동하십시오.
즉, 내가 다루고 있는 명령줄이 적절하게 설정할 수 있을 만큼 복잡하고 Ctrl- A또는 - , - 보다 Ctrl더 복잡한 것이 필요할 때 일반적으로 구성에서 E이 기능을 켭니다 .EDITOR
CtrlXCtrlE
답변2
JdeBP가 말했듯이 BusyBox는 readline을 사용하지 않습니다. 해당 키맵은 파일에 하드코딩되어 read_key.c
있으며 로 해석됩니다. 이는 , 및 가 유효하지 않음을 lineedit.c
의미합니다 .~/.inputrc
/etc/inputrc
termcap
terminfo
v1.25매핑 -arrow/ -arrow 의 모호한 xterm 변형 에 해당하는 or 로 단어 왼쪽을 ESC[1;5D
or ESC[1;3D
로 단어 오른쪽을 하드 코딩합니다.ESC[1;5C
ESC[1;3C
CtrlAltv1.26뒤로/앞으로 단어에 대해 추가되며 일반적으로 - / - ESC-b/ESC-f
에 매핑됩니다 .AltbAltf