[shell] zsh에서 ALT + LeftArrowKey 솔루션 찾기

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

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

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

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



답변

실행 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) 수정


답변

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

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

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

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

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

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

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

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

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

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


답변

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

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


답변

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

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

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


답변

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

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

화살표 키를 뜯어 내세요!


답변

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

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

다음을 내 ~/.zshrc

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


답변

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

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

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

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