zsh와 iTerm2의 단어 사이에서 Alt + 화살표 이동


19

호스팅 공급자 서버 중 하나에 로그인 한 후 GNU 화면의 쉘 프롬프트에서 ALT + left 및 ALT + right가 단어간에 이동하는 것을 알았습니다.

iTerm2에서 실행중인 로컬 OS X zsh에 어떤 종류의 키 바인딩을 구성하고이 동작을 수행 할 위치는 무엇입니까?


이 질문에 관심이있는 사람들은 zsh 단어가 배쉬 단어가 아님을 알고 싶어 할 수도 있습니다. FOO=BARzsh에 한 단어이고 bash에 두 단어입니다. 마찬가지로 커서를 끝으로 설정 foo --bar하고 alt + backspace를 수행하면 bash에 foo --있고 zsh에는 foo . Zsh는 bash에 많은 기능을 추가하지만 무시할 수있는 많은 기본 설정이 있습니다.
weberc2

답변:


28

https://coderwall.com/p/h6yfda 에서 해결책을 찾았습니다 . 링크가 다운되는 경우 가장 중요한 부분을 복사합니다.

  1. 환경 설정, 프로필, 키로 이동하십시오.
  2. 왼쪽 ⌥ 키를 이스케이프 문자로 설정하십시오.
  3. 다음 설정을 사용하여 ⌥ ←의 현재 바로 가기를 찾거나 새 바로 가기를 만듭니다.
    • 키보드 단축키 : ⌥ ←
    • 액션 : 이스케이프 시퀀스 보내기
    • Esc + : b
  4. 다음 설정으로 ⌥ → 키보드 단축키를 반복하십시오.
    • 키보드 단축키 : ⌥ →
    • 액션 : 이스케이프 시퀀스 보내기
    • Esc + : f

1
일반적으로 zsh가 아닌 하나의 특정 터미널 에뮬레이터에만 적용된다는 점을 언급 할 가치가 있습니다.
Hi-Angel

7

당신은 키워드를 찾고 있습니다 backward-wordforward-word. 따라서 키 바인딩이 작동하지 않는 쉘에 bindkey -L | grep backward-word있으면 구성되어 있는지 확인하십시오. zshzle (1)이에 대한 자세한 정보가 있습니다 .

다음과 같이 입력하여 키 바인딩을 수동으로 설정할 수 있습니다.

바인드 키 ' Ctrl+ v Alt+ Right'정방향 단어

바인드 키 ' Ctrl+ v Alt+ Left'하위 단어

키 바인딩에도 문제가 있었으며 거의 ​​항상 Option / Alt 키가 예상되는 Meta / Escape와 다른 것을 보냈습니다.


emacs-forward-word및 을 사용할 수도 있습니다 emacs-backward-word. 차이점은 단어의 시작 부분에서 항상 점프하지 않고 단어의 끝으로 이동하고 단어의 시작 부분으로 이동하는 것입니다.
Aalex Gabi

이것은 가장 강력하고 깨끗한 솔루션입니다. 다른 종류의 키 매핑 및 / 또는 모든 종류의 ssh-tmux-zsh 조합에 적용 할 수 있습니다. 하드 코드 된 이스케이프 시퀀스가 ​​포함 된 다른 솔루션은 특정 시스템의 일부 사례 만 해결합니다.
HKTonyLee

3

iTerm에 대해 말할 수는 없지만 Fedora 19의 GNOME Terminal에서 Oh-my-zsh와 함께 ZSH 5.0.7을 실행하여이 문제를 해결하는 데 사용한 키 바인딩입니다.

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

여기서 \e== 이스케이프 키 순서 ( 섹션 4.1.1에 설명되어 있음 )

경우에 따라 [== O(대문자 O; 섹션 4.2.1에 문서화 됨 ). 아래의 예를 들어 tmux이 대체 그러나없이, 나에게 필요 tmux가없는 대체가 이루어지지 할 필요가있다 [==[

시퀀스의 키 코드 cat는 원하는 시퀀스를 사용 하고 눌러서 얻을 수 있습니다 . 예를 들어, 프레스 결과는 <Alt+Right>다음과 같이 해석되어야합니다.

$ cat
^[[1;3C

^[== \e== 이스케이프 키 순서

[== [없이 tmuxOR [== O(대문자 o)tmux

1;3 == 나는 이것에 대해 확실하지 않지만 논리적으로 의미해야합니다. <Alt>

C == 오른쪽 화살표 키

그런 다음이 시퀀스는 첫 번째 인수로 지속성 bindkey을 위해 ~/.zshrc파일에 제공되며 바인딩됩니다 . 즉, 인수 1의 키 입력 은 첫 번째의 위젯에 대해 특정 편집기 명령 (또는 zsh 용어로 위젯)을 실행합니다. 위 예제의 줄은입니다 forward-word.

~/.zshrc이 두 명령은로 추가 한 후 다시 공급해야한다 :

$ source ~/.zshrc

이제 내 시스템에서 한 가지 성가신 점은이 특정 조합으로 인해 명령이 실행될 때마다 터미널 에뮬레이터에서 경고음을 냈다는 것입니다.

'Edit'->'Profile Preferences'->'Terminal Bell' 확인란.


2

iTerm2의 명령 줄 탐색을보다 직관적으로 만드는 것과 관련하여 나에게 가장 효과적인 것은 (명령 줄에서 자라지 않았지만 텍스트 편집기 및 IDE에서 많은 시간을 보냈습니다) 에:

  • 환경 설정-> 프로파일-> 키로 이동하십시오.
  • 키 매핑 목록 아래에 사전 설정을 추가 / 제거 또는로드 할 수있는 상자가 있습니다 (콤보 상자).
  • Natural Text Editing사전 설정 드롭 다운에서 옵션을 선택하십시오 .

모든 옵션을 개별적으로 수정하지 않고도 편집기의 키를보다 표준적인 배열로 기본 설정합니다.


0

zkbd키 바인딩을 구성 하는 데 사용 하는 것이 좋습니다 . 나는 그것을 사용하고 iTerm2에서 Alt+ Left/ Alt+ Right가 잘 작동합니다. zshcontrib(1)zkbd에 대한 자세한 내용을 참조하십시오 .

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