iTerm 2 : 키보드 단축키를 설정하여 줄의 시작 / 끝으로 건너 뛰는 방법?


395

Ctrl+ left/ right가 줄의 시작 / 끝으로 점프 함을 알 수 있습니다 . 이것을 Cmd+ left/ right arrow? 로 변경하는 방법

얻기 위하여 Alt+ left/ right arrow워드 점프 제대로 작동하기에 따라 이 문서를 .



1
: 당신이 너무 VIM에서 일을하는 바로 가기를 원하는 경우,이 대답을 참조 stackoverflow.com/a/9611698/991068
— Razvan 보낸 고르

답변:


735

iTerm2에 다음 프로파일 바로 가기 키 추가

FOR  ACTION         SEND
⌘←  "SEND HEX CODE"      0x01 
⌘→  "SEND HEX CODE"      0x05
⌥←  "SEND ESC SEQ"  b
⌥→  "SEND ESC SEQ"  f

필요한 사람들을위한 비주얼은 다음과 같습니다.

iTerm 추가 키 비주얼


3
Command + Delete의 코드 / 시퀀스가 ​​무엇인지 알고 있습니까? (프롬프트 지우기)
— Steven Lu

10
다른 곳에서 첫 번째 주석에 답했습니다. 기본적으로 16 진수 코드 0x15는 Ctrl + U를 제공하여 줄을 지 웁니다. 그러나 Tmux 사용을 방해하는 0x01 Ctrl + A를 찾고 있습니다. 따라서 대신 Home 키 (Mac 키보드의 Fn + Left와 동일한 기능)에 매핑하려고합니다.
— Steven Lu

7
Home의 이스케이프 시퀀스는 [1 ~이고 End의 이스케이프 시퀀스는 [4 ~
— Steven Lu

3
굉장한 매력처럼 작동합니다!
— Juto

25
올바른 바인딩은 ⌘← "SEND ESC SEQ" OHHome 및 ⌘→ "SEND ESC SEQ" OFEnd에 해당합니다 (이는 대문자 'o'가 0이 아님). 이 시뮬레이트 실제로 가정 및 종료 키를 눌러, 등 bash는 이러한 의지 작업, 정력, 등
— 디모데 죤

433

iTerm2에서 단어와 줄의 시작 / 끝을 건너 뛰려면 아래 두 가지 솔루션 중 하나 를 선택 하십시오.

1. 간단한 솔루션 (권장)

  1. 환경 설정 열기
  2. "프로필"탭을 클릭하십시오
  3. 왼쪽 목록에서 프로필을 선택하고 (예 : "기본") "키"탭을 클릭하십시오.
  4. "사전 설정"다운 다운을 클릭하고 "자연 텍스트 편집"을 선택하십시오.

여기에 이미지 설명을 입력하십시오


2. 수동으로 키 매핑 (고급)

위에서 언급 한 "자연 텍스트 편집"사전 설정을 사용하지 않으려면 필요한 키를 수동으로 매핑 할 수 있습니다.

  1. 환경 설정 열기
  2. "키"탭을 클릭하십시오
  3. [+]아이콘을 클릭하십시오

이제 다음 단축키를 추가 할 수 있습니다.

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

  • 키보드 단축키 : ⌥+←
  • 작업 : 16 진수 코드 보내기
  • 암호: 0x1b 0x62

여기에 이미지 설명을 입력하십시오

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

  • 키보드 조합 : ⌥+→
  • 작업 : 16 진수 코드 보내기
  • 암호: 0x1b 0x66

커서를 줄의 시작으로 이동

  • 키보드 조합 : ⌘+←
  • 작업 : 16 진수 코드 보내기
  • 암호: 0x01

커서를 줄의 끝으로 이동

  • 키보드 조합 : ⌘+→
  • 작업 : 16 진수 코드 보내기
  • 암호: 0x05

단어 삭제

  • 키보드 조합 : ⌥+←Delete
  • 작업 : 16 진수 코드 보내기
  • 암호: 0x1b 0x08

줄 삭제

  • 키보드 조합 : ⌘+←Delete
  • 작업 : 16 진수 코드 보내기
  • 암호: 0x15

실행 취소

  • 키보드 조합 : ⌘+z
  • 작업 : 16 진수 코드 보내기
  • 암호: 0x1f

이전 바인딩 을 제거하는 것을 잊지 마십시오 :

  • “프로필”탭을 엽니 다
  • 하위 탭 "키"를 클릭하십시오
  • 키 조합 ⌥+ ←및 ⌥+에 대한 매핑 제거→

2
이것은 iTerm2에서 나에게 잘 작동했으며 매우 쉽게 따라갈 수있었습니다. 감사합니다!
— Natetronn

3
⌥ ←의 원래 바인딩이 무엇을 하는지를 명확히하는 것입니까? 나는 그것을 본다 Says send Hex Codes: 0x1b 0x1b 0x5b 0x44. 사람들이 이것을 제거하고 싶지 않은 경우 알아두면 좋을 것입니다.
— aug

5
zsh를 사용하여 줄의 시작과 끝으로 이동하지 못했습니다. "Hex Code" "0x01"/ "0x05"를 사용하면 최상위 답변에서 제안한대로 저에게 효과적이었습니다.
— Flip

2
줄의 시작과 끝으로 이동해도 나에게는 효과가 없었습니다. 최고 답변이 효과가있었습니다.
— hisabimbola

3
iTerm에 방금로드 할 수있는 사전 설정으로 묶을 수있는 방법이 있습니까? 수동으로 입력하는 것이 성가신 것 같지만 이것은 나를 위해 일했고 훌륭했습니다. 고마워요!
— aug

259

이미 좋은 답변이 많이 있지만, 쉘뿐만 아니라 가능한 한 기본 OSX 기능에 가장 가까운 것을 제공해야합니다. ZSH, Bash, node, python -i, iex 및 irb / pry 세션에서 작동한다는 것을 확인했습니다 (readline에는 rb-readline gem을 사용하지만 모두 작동해야 함).

열고 사용하여 ITerm 환경 설정 ⌘+ ,와에 탐색 Profiles탭합니다 ( Keys탭이 사용되지만, 추가 프로필에 키 바인딩은 당신이 할 수 있도록 할 수 있습니다 프로필을 저장 여러 컴퓨터에 동기화) 및 keys하위 탭하고 다음을 입력 :

커서 왼쪽의 모든 문자를 삭제

⌘+ ←Delete16 진수 코드 보내기 :

0x15더 호환되지만 기능은 때로는 커서 왼쪽의 문자가 아닌 전체 행을 삭제하는 것입니다. 나는 개인적으로 이것을 사용 ^U하고 커서 왼쪽의 물건 만 삭제 하기 위해 zsh bindkey를 덮어 씁니다 (아래 참조).

또는

0x18 0x7f호환성이 떨어지고 노드에서 작동하지 않으며 기본적으로 zsh에서는 작동하지 않습니다. zsh 를 수정하려면 아래를 참조하십시오 (bash / irb / pry는 양호해야 함) 작동 할 때 원하는 기능을 수행합니다.

커서 오른쪽의 모든 문자를 삭제

⌘+ fn+ ←Delete또는 ⌘+ Delete→16 진수 코드 보내기 :0x0b

커서 왼쪽에서 한 단어 삭제

⌥+ ←Delete16 진수 코드 보내기 :

0x1b 0x08 엘릭서의 IEX 중단, 다른 곳에서는 잘 작동하는 것 같습니다

또는

0x17 모든 곳에서 작동하지만 IRB에서 정상적인 단어 나누기에서 멈추지 않고 리터럴 공간이 보일 때까지 삭제됩니다.

커서 오른쪽에서 한 단어 삭제

⌥+ fn←Delete또는 ⌥+ Delete→16 진수 코드 보내기 :0x1b 0x64

커서를 줄 앞으로 이동

⌘+ ←16 진수 코드 보내기 :0x01

줄 끝으로 커서 이동

⌘+ →16 진수 코드 보내기 :0x05

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

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

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

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

실행 취소

⌘+ z16 진수 코드 보내기 :0x1f

Redo는 일반적으로 bash, zsh 또는 readline에 바인딩되지 않으므로 사용하지 않는 16 진수 코드로 설정하여 zsh에서 수정할 수 있습니다

⇧+ ⌘+ Z또는 ⌘+ y16 진수 코드 보내기 :0x18 0x1f

이제 작동하지 않는 문제를 해결하는 방법

zsh의 경우 다음을 실행하여 아직 작동하지 않는 ⌘+ ←Delete및 ⇧+ ⌘+ Z/ ⌘+ y에 대한 바인딩을 설정할 수 있습니다 .

# changes hex 0x15 to delete everything to the left of the cursor,
# rather than the whole line
$ echo 'bindkey "^U" backward-kill-line' >> ~/.zshrc

# binds hex 0x18 0x7f with deleting everything to the left of the cursor
$ echo 'bindkey "^X\\x7f" backward-kill-line' >> ~/.zshrc

# adds redo
$ echo 'bindkey "^X^_" redo' >> ~/.zshrc

# reload your .zshrc for changes to take effect
$ source ~/.zshrc

bash 또는 readline에 redo를 추가하기위한 솔루션을 찾을 수 없으므로 누군가가 그 중 하나에 대한 솔루션을 알고 있다면 아래에 의견을 말하고 추가하려고 시도합니다.

키 시퀀스를 16 진으로 변환하는 방법에 대한 검색 테이블을 찾는 사람에게는 이 테이블이 매우 유용합니다.


2
정말 유용합니다. 많은 차이가 있습니다! 나는 어떤 사람들이 $앞에서 와 혼동 될 수 있음을 지적하고 싶습니다 echo(단지 제거 하시겠습니까?). 그 외에는 완벽합니다. 감사합니다.
— edmundo

1
@Christophe 키 바인딩이 있어야하는 것처럼 보입니다. 16 진 값을 추가하는 중 실수가 발생했거나 하위 단어의 키 바인딩을 덮어 쓰고 있습니다. 실행 bindkey | grep "\^\[b"하면 설정된 후에 다른 항목이 덮어 쓰고 있는지 알 수 있습니다. 그것은 해야 에만 반환 #=> "^[b" backward-word. 덮어 쓰는 경우 덮어 쓰는 위치를 찾아서 제거해야합니다. 그것이 가능하지 않다면, 당신은 echo 'bindkey "^[b" backward-word' >> ~/.zshrc그것을 마지막 줄에 추가하고 .zshrciTerm을 다시 시작할 수 있습니다.
— Travis

2
@Christophe keys는 iTerm 환경 설정 의 탭을 확인하여 ⌥+ ←무언가에 매핑되어 있는지 확인하십시오 . 그렇다면 제거하십시오. 릴리스 b를 빠르게 누른 esc다음을 눌러 올바르게 작동하는지 테스트 할 수 있습니다 b. 단어가 왼쪽으로 이동합니다. 또는 ⌥+ ←를 16 진수 0x1b 0x42 또는로 매핑 할 수 있습니다 0x1b 0x5b 0x31 0x3b 0x35 0x44. 나는 그 두 가지 모두 나를 위해 일한다는 것을 확인했다. 나는 당신이 당신의 탭이나 탭 에서 iTerm으로 ⌥+ ←덮어 썼다고 생각합니다 . profile keyskeys
— 트래비스

3
놀랄 만한! 여기서 Undo + Redo 바인딩에 대해 배웠습니다.
— ecbrodie

3
이 작업을 수동으로 수행했는데 왜 그렇게하기 위해 프로필을 가져올 수 없는지 생각했습니다. 그런 다음 이 지침에 따라 GabLeRoux / iterm2-macos-dynamic-profile을 작성했습니다. 감사합니다 🍻
— GabLeRoux

48

iterm2 에서 주요 환경 설정을 설정하려면 위에 나열된 학습서를 따르십시오 .

  1. 새로운 단축 키 만들기
  2. 조치로 "이스케이프 시퀀스 전송"을 선택하십시오.
  3. 그런 다음 아래 텍스트에서 cmd-left 를 설정 하십시오.
    • 입력 [H을위한 라인 시작
      OR
    • 입력 [F을위한 라인 끝

1
F는 내 iterm2 내에서 한 단어 만 점프합니다
— Matthias

1
ITerm => 기본 설정 => 키
— pfrank

이거 너무 좋아! 다른 솔루션은 나를 위해 작동하지 않았습니다. 나는 iterm2에서 ctrl + a와 ctrl + e를 사용할 수 없다는 것에 시간을 낭비했다. 그러나 나는 그것을 위해 물고기를 포기하고 싶지 않았습니다. 이것은 완전히 작동합니다 감사합니다!
— FLY

다른 솔루션도 나에게 효과가 없었지만 이것은 효과가있었습니다.
— 브라함 스나이더

42

iTerm 3.0.12에서는 Natural Text Editing사전 설정으로 전환 할 수 있습니다 .

여기에 이미지 설명을 입력하십시오

iTerm → 환경 설정 → 프로파일 → 키

경고 사전 설정이므로 이전에 바인딩 한 키를 무시할 수 있습니다. 따라서 사전 설정을 적용하기 전에 현재 키 바인딩을 저장하는 것이 좋습니다.


2
좀 더 정교하게 대답 해 주시겠습니까? 마찬가지로, 사전 설정에는 무엇이 포함되며 덮어 쓸 수 있습니까?
— Carles Alcolea

답변 해주셔서 감사합니다. 또한 기본값으로 고정하지 않고 자연 텍스트 편집 "모드"로 프로파일을 토글 할 수있는 방식으로 사용자 정의 프로파일에 적용하는 것이 가장 좋습니다.
— aug

29

iTerm2에서 줄의 끝 또는 줄의 시작으로 가고 싶은 사람을 빠르게 참조하려면 위의 링크 http://hackaddict.blogspot.com/2007/07/skip-to-next-or-previous-word- in-iterm.html은 iTerm2에서 다음과 같이 지적합니다.

  • Ctrl+ A, 줄의 시작 부분으로 이동
  • Ctrl+ E, 줄 끝으로 이동합니다.

이 답변이 왜 맨 위에 있지 않습니까?
— Gangadhar JANNU

1
@ GangadharJannu : 완전히 동의합니다. 그것은 바로 간다. 상단에 있어야합니다.
— Catbuilts

10

Travis 답변을 사용 했고 지침에 따라 가져올 수 있는 동적 프로필 을 만들었습니다 .

GabLeRoux / iterm2-macos- 동적 프로파일

지침은 readme에 있으며 수동으로 모두 추가하는 것보다 가져 오는 것이 훨씬 빠릅니다. 의견에 숨겨져 있기 때문에 @gooli의 요청에 따라 답변했습니다. 당신이 이것을 즐기기를 바랍니다


2
1 년 후 여기로 돌아와서 이것을 찾아서 너무 행복합니다!
— elifiner

9

동일한 문제가 있지만 특히 iTerm 2와 함께 Zsh 셸을 사용하는 사람을 돕기 위해 Zsh 가 /etc/inputrc올바르게 읽히지 않으므로 환경 설정을 통해 설정 한 키 바인딩을 이해하지 못하는 것으로 나타났습니다!

이 문제를 해결하려면 다음 .zshrc과 같은 키 바인딩을 파일 에 추가해야합니다 .

# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line

위의 예에서 "e"앞의 백 슬래시는 참고하십시오. 링크 된 기사에는 표시되지 않으므로 .zshrc바인딩을 추가 할 때 파일에 추가 하십시오 .


4

구식 emacs 바인딩은 여전히 ​​iterm2 및 os x 터미널에서 작동 할 수 있습니다.

환경 설정-> 프로파일-> 키 (프로파일의 하위 탭)

  • 세트 Left/Right option <kbd>⌥</kbd> key acts as +Esc(os x 터미널과 유사)

이것은 활성화해야 alt- f및 alt- b단어 단어를 이동. (스틸 ctrl- a및 ctrl- e항상 정상적으로 작동)

meta이전 바인딩 으로 설정하면 일부 iterm2 바인딩을 사용할 수없는 동안 작동합니다.


2

여기에 설명 된 것처럼 간단한 단계로 수행 할 수 있습니다.

기본적으로 단어 점프 (옵션 + → 또는 ←) 및 단어 삭제 (옵션 + 백 스페이스)는 작동하지 않습니다. 이를 활성화하려면 "iTerm → 환경 설정 → 프로파일 → 키 → 사전 설정로드 ... → 자연 텍스트 편집 → 붐! 헤드 폭발"로 이동하십시오.


2

줄의 시작과 끝으로 이동하기 위해 작동하는 유일한 것은

⌘← "SEND ESC SEQ" OH-줄의 시작
⌘→ "SEND ESC SEQ" OF으로 이동- 줄 의 끝으로 이동


1

bind -p 쉘에 바운드 이스케이프 된 키 목록이 표시되어 더 많은 아이디어 / 검색어를 제공하는 데 도움이 될 수 있습니다.


5
bind -pzsh, csh tcsh, Bourne 쉘 (bash, sh)에서만 작동합니다 bindkey.
— 트래비스


0

나를 위해 다음 조합이 효과가있었습니다.
| Key Action Esc+ End result | |-----------------------------------------------------| | ⌘← Send Escape Sequence a Send ^[ a | | ⌘→ Send Escape Sequence e Send ^[ e |

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