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


14

내가 사용 Ctrl- Ctrl- I가 작업 모든 리눅스 시스템에 있지만,이 키 조합 내 맥북 프로에 bash는 작동하지 않습니다. Snow Leopard를 실행 중이며 기본 제공 터미널 응용 프로그램을 사용하고 있습니다.

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

이 키를 다윈 배쉬에서 작동시키는 방법에 대한 아이디어가 있습니까?


2
공백을 사용하는 경우 기본적으로 Ctrl + 화살표는 공백을 전환합니다.
mark4o

답변:


13

OS X은 emacs 키 바인딩을 기본값으로 사용합니다. 이것은 OS X의 거의 모든 응용 프로그램에 해당하는 것이 사실입니다. 그것은 Ca와 Ce와 같은 것들이 시작 / 끝이라는 것을 의미합니다. 또한 M-backspace로 오름차순 단어를 죽이고 Ck를 사용하면 kill-line을 얻을 수 있습니다.

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

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

따라서 질문에 답하기 위해 C- → 및 C- ←가 Linux 서버에서 수행하는 작업을 수행 할 때 Readline이 수행하는 작업을 다시 매핑하려고합니다.

~/.inputrc파일 의 구문은 원하는 작업에 매우 간단합니다 key-sequence: action.

원하는 동작을 얻는 데 필요한 것입니다.

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

유용한 바인딩이 추가 된 다른 페이지 가 있습니다.

(아마도 리눅스 상자에서 / etc / inputrc를 OS X ~ / .inputrc에 복사하면 벗어날 수 있습니다)


참고 사항 : 당신이 xterm 등-키를 많이 TMUX 사용하는 경우에는 필요 \e[1;5C하고 \e[1;5D또한 트리거 forward-wordbackward-word.
Arne

2
또 다른 참고 사항 : 여전히 작동하지 않는 경우 Mission Control / Spaces와의 바로 가기 충돌 때문일 수 있습니다. 시스템 환경 설정-> 키보드-> 단축키-> 미션 컨트롤, 왼쪽 / 오른쪽으로 공간 이동
bhh1988

"OS X는 기본적으로 emacs 키 바인딩을 사용합니다." "Ctrl- 화살표"는 emacs 키 바인딩이기도합니다.
그렉

3

~/.inputrc다음 줄을 넣으십시오 .

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

0

요즘 터미널에서 Ctrl- 화살표가 출력하는 이스케이프 시퀀스가 ​​변경된 것 같습니다. 오늘 (2018 년 말) 현재 나를 위해 일하는 것은 다음과 같습니다.

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

참고 : cat -v터미널 에 입력 하고 Ctrl- 왼쪽 화살표 또는 Ctrl- 오른쪽 화살표를 누르면 실제 탈출 순서를 항상 파악할 수 있습니다 . 내 자신의 Ctrl- 왼쪽 화살표에 대한 샘플 출력은 다음과 같습니다.

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

.inputrc링고 로 번역하려면 이스케이프 부호 ^[를 바꾸고 \e큰 따옴표 안에 결과 를 붙이 십시오.


0

@ bhh1988에서 언급했듯이 Mission Control 구성은에서 Ctrl 키가 화살표 키로 작동하지 않도록합니다 bash. 해당 바로 가기를 방해하고 싶지 않으므로 Option (예 : Alt) 키를 대신 사용합니다. 현재 독일어 키보드를 사용하는 Mojave에서는 (관련성이 있는지 모르겠습니다) .inputrc단어 사이를 이동하기 위해 Option- 왼쪽 화살표 및 Option- 오른쪽 화살표를 사용 하려면 다음을 입력하십시오 .

"\e\e[C": forward-word
"\e\e[D": backward-word
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.