zsh에서 ALT + LeftArrowKey 솔루션 찾기


130

최근에 bash에서 zsh로 전환했지만 한 번에 한 단어 씩 앞뒤로 이동하는 Alt+ LeftArrowKeyAlt+ RightArrowKey가 그립습니다 .

지금 Alt+를 누르면 LeftArrowKey몇 개의 글자로 돌아가서 갇혀 있습니다. 나는 더 이상 뒤로 가지 않을 것이며 내가 예상했던 것처럼 Alt+ RightArrowKey로 라인의 끝으로 돌아 가지 않을 것입니다. 화살표 키를 사용하여 줄의 끝으로 이동할 수도없고 두 번째에서 마지막으로 만 이동합니다. 줄에 새 문자를 입력하거나 실제로 삭제할 수 없습니다.

사랑하는 지름길을 어떻게 되 찾을 수 있습니까?

중요한 경우 터미널을 사용하는 Mac OS X에 있습니다.

답변:


243

실행 cat한 다음 키를 눌러 바로 가기가 보내는 코드를 확인합니다.
( 완료되면 Ctrl+ C를 눌러 종료 cat합니다.)
저에게는 (ubuntu, konsole, xterm) Alt+를 눌러 전송 ^[[1;3D하므로 .zshrc에 넣을 것입니다.

bindkey "^[[1;3C" forward-word
bindkey "^[[1;3D" backward-word

(실제로 나는 CtrlWindows 또는 Linux GUI 아래의 일반 텍스트 상자에서와 같이 단어별로 이동 하려면 + 화살표 를 사용하는 것을 선호합니다 .)

관련 질문 : Terminator Terminal Emulator에서 Zsh를 실행할 때 .zshrc의 키 설정 (Home / End / Insert / Delete) 수정


15
당신은 나의 구세주입니다! 내 Mac에서 "Alt + <-"는 "^ [b"를,->는 "^ [f"를 주어 추가했습니다. 매력처럼 작동합니다. Ctrl + 화살표는 Mac에서 데스크톱 간 전환을 위해 예약되어 있습니다.
Mads Ohm Larsen

1
한 가지 메모는 ctrl + <-cat ^[[D이 나에게 보고 하고 ctrl + v가보고하고 있다는 것 ^[OD입니다. Ctrl + v의 제안은 작동했지만 cat 's는 작동하지 않았습니다. 또한 ctrl + v는 alt + <-및 alt +-> 모두에 대해 동일한 것을보고했습니다. 나는 cat의 출력을보고 "[["를 "O"로 대체하여이 두 가지를 추가 할 수있었습니다.
Mike S

10
cat 아래의 내 출력은 ^[^[[C정방향 단어와 ^[^[[D역방향 단어에 대한 것이지만 .zshrc에서 업데이트하는 것은 어떤 이유로 작동하지 않았습니다.
Yunti

2
@Yunti - 퍼팅 bindkey "^[^[[D" backward-wordbindkey "^[^[[C" forward-word~ / .zprofile 나를 위해 일한!
Fernando Espinosa

남자! 내 생명을 구했습니다! 공유해 주셔서 감사합니다!
Joao Henrique

187

셸에 관계없이 iTerm을 사용하는 모든 사용자

여기에 제공된 모든 솔루션은 제 생각에 역방향 접근 방식을 취합니다. 기본적으로 셸에 터미널에서 설정 한 일부 esc 시퀀스 또는 기타 키 바인딩을 수신하도록 지시하여 셸을 전환 할 때 호환성 문제를 생성합니다 (다른 셸에 SSH를 사용하는 경우 BASH에서 ZSH로 전환하는 등 모든 키 바인딩은 아니지만 일부).

대부분의 셸에는 미리 바인딩 된 기본 시퀀스 집합이 있습니다. 또한 100 % 일관 적이지는 않지만 충분히 가깝습니다. 따라서 셸에서 특정 작업에 대한 키 바인딩을 만드는 가장 쉬운 방법은 터미널 응용 프로그램에 셸간에 일관된 기본 키 바인딩에 바인딩하도록 지시하는 것입니다.

나는 네이티브 맥 키 바인딩에 가까운 응답에 터미널을 얻기 위해 압축 솔루션을 썼다 여기에

iTerm 환경 설정 + 탭으로 ,이동하고 Profiles( Keys탭을 사용할 수 있지만 프로필에 키 바인딩을 추가하면 프로필을 저장 하고 여러 컴퓨터에 동기화 할 수 있음) keys하위 탭으로 이동하고 다음을 입력합니다.

커서를 왼쪽으로 한 단어 이동

+ 16 진수 코드 보내기 :0x1b 0x62

커서를 오른쪽으로 한 단어 이동

+ 16 진수 코드 보내기 :0x1b 0x66

그리고 ZSH뿐만 아니라 BASH, irb / pry, node 등을 실행하는 서버에 SSH를 사용하는 경우에도 원하는 동작을 제공해야합니다.


1
zsh가 제대로 작동하지만 irb 및 기타 콘솔이 아니기 때문에 허용되는 솔루션에 문제가 있습니다. 이전 설정 지우기 (권장되는 iTerm 프로필에서)는 매력처럼 작동합니다!
llekn

1
bindkey 솔루션은 Mac에서 성가신 오류 소리를냅니다. 이것이 올바른 방법이어야합니다.
Weishi Zeng

@Lev 셸이 기본 구성에 매핑되지 않았기 때문일 수 있습니다. 실행 bindkey | grep forward-word하면 "^[f" forward-word반환되는 것을 볼 수 있지만 그렇지 않은 경우 두 가지 옵션이 있습니다. 반환 된 다른 사람의 일에 매핑하거나 추가 "^[f" forward-word당신에게 .zshrc.
Travis

이것은 셸 "^[f"에서 가장 일관되게 사용되는 바인딩 forward-word이며 내 bash 버전에서 기본적으로 설정된 유일한 바인딩 인 것 같습니다 .
Travis

어떻게 든 옵션 대신 명령 버튼으로 작동했습니다. 감사합니다. :)
Vaibhav Jain

72

~ / .zshrc에 다음을 추가하면 OSX Mountain Lion에서 저에게 효과적이었습니다.

bindkey -e
bindkey '[C' forward-word
bindkey '[D' backward-word

4
이 솔루션은 사용할 때마다 iTerm 2에서 "종"을 트리거하므로 단어 사이를 건너 뛰는 것은 정말 짜증날 수 있습니다.
Matthew Morek

1
방법을 사람의 그림은 ^ @MatthewMorek 이런 일이 발생하지 않도록하기
다니엘 고베

18
'\ e \ e'는 종을 막습니다. 터미널 호환 모드에서 사용하여 ITerm 2 엘 캐피 탄의 내 구성은 bindkey "\e\e[D" backward-word bindkey "\e\e[C" forward-word
요하네스 Gontrum

감사합니다. 이것은 macOs Sierra의 문제를 해결했습니다. 터미널 또는 iTerm2에서 벨소리가 들리지 않습니다.
Raspo 2017

시작이나 단어가 아닌 단어의 끝에서 이동하도록 설정하는 방법은 무엇입니까?
Mafro34

22

MacOS High Siera 10.13.6 또는 Mojave 10.14.2 및 ZSH와 함께 iTerm2 사용 단어에서 이동하려면 다음과 같이 입력해야합니다.

bindkey "\e\e[D" backward-word
bindkey "\e\e[C" forward-word

다른 솔루션이 작동하지 않습니다.


1
이것은 나에게도 효과가 있었던 유일한 솔루션입니다. 감사합니다! Mac OS Mojave
jamescampbell

OS Catalina에서도 작동합니다!
Reed Richards

7

귀하의 질문에 엄격하게 답변하지는 않지만 forward-word및 의 기본 바인딩 backward-wordalt-fresp입니다. alt-b.

이 작품은 모든 곳에서, 또한과 일치하면서 홈 행을 떠날 것을 요구하고, 좋은 기억을 돕는 특성 (F = 앞으로, B = 백)를 가지고하지 않습니다 ctrl-fctrl-b있는 forward-characterbackward-character.

화살표 키를 뜯어 내세요!


4
zsh / iterm2에서 작동하지 않고 ƒ 및 ∫ (cb cf 작동)를 인쇄합니다.
Davorin

2

나를 위해 작동하도록 이 답변을 사용 했지만 코드를 바꿔야했습니다 (왼쪽 <-> 오른쪽)

⌥ + ← 16 진수 코드 보내기 : 0x1b 0x66
⌥ + → 16 진수 코드 보내기 : 0x1b 0x62

다음을 내 ~/.zshrc

bindkey -e
bindkey "^[b" forward-word
bindkey '^[f' backward-word

bindkey대신 s 를 변경하여 에 바인딩 ^[f하고 에 바인딩 forward-word하지 않으면 혼란스럽지 않을 것 backward-word입니다.
Nickolay

1

Mavericks (10.9.4)에서 코드는 1; 5입니다 ... 그래서 alt를 화살표로 바인딩하기 위해 다음을 사용하여 .zshrc를 사용합니다.

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

CTRL + V를 사용한 다음 사용할 명령을 사용할 수 있습니다.

Yosemite에서는 Rob의 솔루션을 사용합니다.


1
bindkey "[C" forward-word bindkey "[D" backward-word
Farkie 2015

0

zsh에서 bindkey명령을 사용하여 키보드 단축키를 볼 수 있습니다 .

bindkey사용자 지정 키 바인딩없이 사용할 수있는 옵션을 탐색하는 데 사용 합니다.

^[b , 단어를 뒤로 이동하고 단어 ^[f를 앞으로 이동합니다.

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