OS X의 bash에서 Ctrl-화살표가 작동하지 않는 이유는 무엇입니까?

OS X의 bash에서 Ctrl-화살표가 작동하지 않는 이유는 무엇입니까?

Ctrl나는 작업하는 모든 Linux 시스템에서 -and - Ctrl를 사용 하지만 이러한 키 조합은 Macbook Pro의 bash에서 작동하지 않습니다. Snow Leopard를 실행 중이고 내장된 터미널 응용 프로그램을 사용하고 있습니다.

키 조합은 터미널 이전이나 터미널에서 캡처되지 않는 것 같습니다. Linux 서버 중 하나에 ssh를 사용하면 Ctrl- /를 사용하여 명령줄에서 다음/이전 단어로 이동할 수 있기 때문입니다. 그러나 Macbook의 bash에서 이 키 조합을 시도하면 오른쪽 화살표에는 "C"가, 왼쪽 화살표에는 "D"가 표시됩니다.

Darwin bash에서 이러한 키를 작동시키는 방법에 대한 아이디어가 있습니까?

답변1

OS X에서는 기본적으로 emacs 키 바인딩을 사용합니다. 이는 OS X의 거의 모든 응용 프로그램에 적용되는 사실이며 다소 좋습니다. 이는 Ca 및 Ce와 같은 것이 줄의 시작/끝임을 의미합니다. 또한 M-백스페이스를 사용하면 멋진 역방향 단어 삭제 기능을 얻을 수 있고, Ck를 사용하면 킬라인을 사용할 수 있습니다.

이는 터미널에서 정방향/역방향 단어가 각각 Mf 및 Mb에 바인딩되어 있음을 의미하지만(M = Meta = alt/option), 그렇지 않습니다. OS X에서 정방향/역방향 단어는 기본적으로 M-→ 및 M-←에 바인딩됩니다.

귀하의 계정에 대해 GNU Readline 라이브러리가 구성되는 방식을 변경하여 이 동작을 변경할 수 있습니다. 이는 귀하의 파일에서 발생합니다 ~/.inputrc. man readline다음과 같은 온라인 문서뿐만 아니라 바인딩 가능한 명령의 큰 목록을 얻을 수 있습니다.여기요..

따라서 귀하의 질문에 답하기 위해 Readline이 C-→ 및 C-←를 볼 때 수행하는 작업을 Linux 서버에서 수행하는 작업으로 다시 매핑하고 싶습니다.

파일 구문은 ~/.inputrc수행하려는 작업에 대해 매우 간단합니다 key-sequence: action.

원하는 동작을 얻으려면 다음이 필요합니다.

"\e[5C": forward-word
"\e[5D": backward-word

여기 또 다른 페이지가 있습니다추가적인 유용한 바인딩이 있습니다.

(아마도 Linux 상자에서 OS X ~/.inputrc로 /etc/inputrc를 복사하면 문제가 해결될 수 있습니다)

답변2

2020년 1월 업데이트

최신 버전의 OSX에서 기본 쉘은 zsh. 따라서 ctrl-arrowleft 및 ctrl-arrowright가 예상대로 작동하도록 하는 마법 주문은 다음과 같습니다.

bindkey '^[[1;5D' backward-word
bindkey '^[[1;5C' forward-word

(당신의 에 넣으세요 .zshrc)

답변3

~/.inputrc다음 줄을 입력하세요 :

"\e[5C": forward-word
"\e[5D": backward-word

답변4

요즘에는 터미널에 출력되는 이스케이프 시퀀스가 ​​변경된 Ctrl것 같습니다 . Arrows오늘(2018년 말) 현재 나에게 적합한 방법은 다음과 같습니다.

"\e[1;5C": forward-word
"\e[1;5D": backward-word

cat -v참고: 터미널에 입력하고 Ctrl- Left Arrow또는 Ctrl- 를 눌러 실제 이스케이프 시퀀스를 알아낼 수 있습니다 Right Arrow. 다음은 Ctrl-왼쪽 화살표에 대한 샘플 출력입니다.

^[[1;5C
^[[1;5C

링고 로 번역하려면 .inputrc이스케이프 기호를 ^[로 바꾸고 \e결과를 큰따옴표 안에 넣으세요.

관련 정보